GitHub Actions runner'ları geçici sanal makinelerdir; USB token takılamaz. Bu nedenle otomatik imzalama için özel anahtarı bulut HSM'de tutan bir model uygundur.
Ön koşullar
- Bulut HSM üzerinde hazır OV/EV kod imzalama sertifikası.
- Sağlayıcının imzalama istemcisi veya komut satırı aracı.
- Windows tabanlı runner (
windows-latest); SignTool orada hazır gelir.
Gizli bilgileri saklama
Kimlik bilgilerini Settings > Secrets and variables > Actions altına ekleyin. Değerleri asla iş akışı dosyasına veya depoya yazmayın, log'a yazdırmayın.
Örnek iş akışı
name: release
on:
push:
tags: ['v*']
jobs:
build-sign:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: dotnet build -c Release
- name: Sign
env:
SIGN_USER: ${{ secrets.SIGN_USER }}
SIGN_KEY: ${{ secrets.SIGN_KEY }}
shell: pwsh
run: |
# Sağlayıcı istemcisi oturumu açtıktan sonra:
signtool sign /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 /a bin\Release\uygulama.exe
- name: Verify
run: signtool verify /pa /v bin\Release\uygulama.exe
Oturum açma adımı sağlayıcıya göre değişir; kendi sağlayıcınızın dokümanındaki komutu buraya ekleyin.
Güvenlik önerileri
- İmzalamayı yalnızca etiket veya korumalı dal tetiklemelerinde çalıştırın.
- Çatal (fork) kaynaklı pull request'lerde secret'lara erişim verilmez; imzalamayı bu akıştan ayırın.
- Environment onay kuralları ile üretim imzasını elle onaya bağlayabilirsiniz.
- Her imzada zaman damgası kullanın.
Sorun giderme
- signtool bulunamadı: Tam yolu kullanın ya da PATH'e ekleyin; ajan görüntüsündeki SDK sürümünü kontrol edin.
- Sertifika bulunamadı: İstemci oturumu açılmamış olabilir; imzalama adımından önce oturum adımını çalıştırın.
- Zaman aşımı: Damga sunucusuna erişimde yeniden deneme mantığı ekleyin.
Bulut HSM seçeneği için Certum bulut kod imzalama, genel ürünler için kod imzalama sayfalarına bakın.