Neden CI/CD'de Otomatik İmzalama?
Modern yazılım geliştirme süreçlerinde Continuous Integration/Continuous Deployment (CI/CD) standart bir pratik haline gelmiştir. Manuel kod imzalama bu otomatik akışı kesen, zaman kaybettiren bir adımdır. Otomatik imzalama ile:
- Her build otomatik olarak imzalanır
- İnsan hatası riski ortadan kalkar
- Release süreci hızlanır
- İmzalama tutarlılığı sağlanır
GitHub Actions ile İmzalama
GitHub Actions workflow dosyasında kod imzalama adımı:
name: Build and Sign
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: dotnet build --configuration Release
- name: Sign
env:
CERT_PASSWORD: ${{ secrets.CERT_PASSWORD }}
run: |
echo "${{ secrets.CERT_BASE64 }}" | base64 -d > cert.pfx
signtool sign /fd sha256 /tr http://timestamp.digicert.com /td sha256 /f cert.pfx /p $env:CERT_PASSWORD "bin/Release/app.exe"
Jenkins Pipeline ile İmzalama
pipeline {
agent any
stages {
stage('Sign') {
steps {
withCredentials([file(credentialsId: 'code-signing-cert', variable: 'CERT')]) {
bat "signtool sign /fd sha256 /tr http://timestamp.digicert.com /td sha256 /f %CERT% /p %CERT_PASS% app.exe"
}
}
}
}
}
Azure DevOps Pipeline
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'build'
- script: |
signtool sign /fd sha256 /tr http://timestamp.digicert.com /td sha256 /a "$(Build.ArtifactStagingDirectory)/app.exe"
displayName: 'Code Signing'
Güvenlik En İyi Pratikleri
- Sertifikayı secrets'da saklayın: Asla repo'ya commit etmeyin
- Cloud HSM kullanın: Sertifika dosyasını kopyalamak yerine cloud HSM API'si tercih edin
- İmzalama logları tutun: Audit trail için tüm imzalama işlemlerini kaydedin
- Timestamp ekleyin: Her imzalamada timestamp kullanın
- Sertifika rotasyonu: Süresi dolmadan yeni sertifika planlaması yapın
Yorumlar
Henüz yorum yapılmamış. İlk yorumu siz yapın!
Yorum Yaz