Azure DevOps'ta derlenen yazılımı yayın öncesi imzalamak, sürüm hattının standart bir adımı olmalıdır. Pipeline ajanları paylaşımlı veya geçici olduğundan, özel anahtarı bulut HSM'de tutan bir sertifika burada en az sürtünmeyle çalışır.
Hazırlık
- Windows agent kullanın (Microsoft-hosted
windows-latestya da self-hosted). - SignTool için Windows SDK bulunmalıdır; hosted agent'larda genellikle vardır.
- Sertifika sağlayıcınızın imzalama istemcisini veya API bilgilerini hazırlayın.
Gizli bilgileri yönetmek
- Pipelines > Library altında bir Variable Group oluşturun.
- Kullanıcı adı ve anahtar değişkenlerinin yanındaki kilit simgesiyle "secret" olarak işaretleyin.
- Gerekirse grubu Azure Key Vault ile bağlayın.
- Hatta sertifika veya anahtar dosyasını yalnızca gerektiğinde Secure Files ile kullanın.
Örnek YAML
pool:
vmImage: 'windows-latest'
variables:
- group: imzalama-gizli
steps:
- script: dotnet build -c Release
displayName: Build
- pwsh: |
signtool sign /fd SHA256 /tr http://timestamp.sectigo.com /td SHA256 /a "$(Build.SourcesDirectory)\bin\Release\uygulama.exe"
displayName: Sign
- pwsh: signtool verify /pa /v "$(Build.SourcesDirectory)\bin\Release\uygulama.exe"
displayName: Verify
Secret değişkenler ortam değişkenine otomatik aktarılmaz; betiğe env: ile açıkça verin.
İyi uygulamalar
- İmzalamayı yalnızca sürüm (release) aşamasında çalıştırın ve onay kapısı ekleyin.
- Logların gizli değerleri göstermediğinden emin olun.
- İmzalı çıktıyı yayımlamadan önce doğrulama adımını zorunlu tutun.
Sorun giderme
- Secret değişken boş geliyorsa grubun pipeline iznini ve değişken adını kontrol edin.
- SignTool yolu bulunamazsa tam yolu kullanın.
- Zaman damgası hatasında bir başka TSA adresi deneyin veya yeniden deneme ekleyin.
Bulut HSM çözümü için Certum bulut kod imzalama, sertifika seçenekleri için kod imzalama sayfasına göz atın.