İçeriğe geç
  1. Ana Sayfa
  2. Blog
  3. Teknoloji
  4. CI/CD Pipeline'da Kod İmzalama: GitHub Actions, Jenkins, Azure DevOps Rehberi
Teknoloji 4 dk okuma

CI/CD Pipeline'da Kod İmzalama: GitHub Actions, Jenkins, Azure DevOps Rehberi

CI/CD pipeline'ınıza kod imzalama nasıl entegre edilir? GitHub Actions, Jenkins ve Azure DevOps için adım adım yapılandırma örnekleri.

CI/CD Pipeline Kod İmzalama Rehberi

CI/CD pipeline'da kod imzalama otomasyonu, modern yazılım geliştirme sürecinin vazgeçilmez bir parçasıdır. Her build'de yazılımınızı otomatik olarak imzalamak, hem güvenliği artırır hem de insan hatasını ortadan kaldırır. Bu rehberde GitHub Actions, Jenkins ve Azure DevOps platformlarında kod imzalama entegrasyonunu anlatıyoruz.

CI/CD'de Kod İmzalamanın Avantajları

  • Tutarlılık: Her build aynı standartta imzalanır
  • Hız: Manuel imzalama ihtiyacı ortadan kalkar
  • Güvenlik: Sertifika anahtarları güvenli vault'larda saklanır
  • İzlenebilirlik: Her imzalama işlemi loglanır
  • Uyumluluk: Compliance gereksinimleri otomatik karşılanır

Ön Koşullar

CI/CD pipeline'da kod imzalama için şunlar gereklidir:

  1. Cloud HSM tabanlı sertifika: USB Token CI/CD ortamında kullanılamaz
  2. Güvenli secret yönetimi: PFX şifreleri veya API anahtarları vault'ta saklanmalı
  3. SignTool veya platform aracı: Build agent'ta yüklü olmalı
  4. Timestamp sunucusu erişimi: Build agent internete erişebilmeli

GitHub Actions ile Kod İmzalama

Sertifikayı GitHub Secrets'a Ekleyin

PFX sertifikanızı Base64'e dönüştürün ve GitHub Secret olarak saklayın:

# PFX'i Base64'e dönüştür
base64 -i sertifika.pfx -o sertifika_base64.txt

GitHub repository Settings → Secrets → Actions → New secret:

  • SIGNING_CERTIFICATE: Base64 encoded PFX içeriği
  • SIGNING_PASSWORD: PFX şifresi

Workflow YAML Dosyası

name: Build and Sign
on: [push, pull_request]

jobs:
  build-and-sign:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Build
        run: dotnet build --configuration Release
      
      - name: Decode Certificate
        run: |
          $cert = [System.Convert]::FromBase64String("${{ secrets.SIGNING_CERTIFICATE }}")
          [IO.File]::WriteAllBytes("cert.pfx", $cert)
      
      - name: Sign Binary
        run: |
          signtool sign /f cert.pfx /p "${{ secrets.SIGNING_PASSWORD }}" /tr http://timestamp.digicert.com /td sha256 /fd sha256 "bin\Release\app.exe"
      
      - name: Verify Signature
        run: signtool verify /pa "bin\Release\app.exe"
      
      - name: Cleanup
        if: always()
        run: Remove-Item cert.pfx -ErrorAction SilentlyContinue

Jenkins Pipeline ile Kod İmzalama

pipeline {
    agent { label 'windows' }
    
    environment {
        PFX_PASSWORD = credentials('code-signing-password')
    }
    
    stages {
        stage('Build') {
            steps {
                bat 'dotnet build --configuration Release'
            }
        }
        
        stage('Sign') {
            steps {
                withCredentials([file(credentialsId: 'code-signing-cert', variable: 'PFX_PATH')]) {
                    bat """
                        signtool sign /f "%PFX_PATH%" /p "%PFX_PASSWORD%" ^
                        /tr http://timestamp.digicert.com /td sha256 /fd sha256 ^
                        "bin\Release\app.exe"
                    """
                }
            }
        }
        
        stage('Verify') {
            steps {
                bat 'signtool verify /pa "bin\Release\app.exe"'
            }
        }
    }
}

Azure DevOps Pipeline ile Kod İmzalama

trigger:
  - main

pool:
  vmImage: 'windows-latest'

steps:
  - task: DotNetCoreCLI@2
    inputs:
      command: 'build'
      arguments: '--configuration Release'

  - task: DownloadSecureFile@1
    name: signingCert
    inputs:
      secureFile: 'code-signing.pfx'

  - script: |
      signtool sign /f "$(signingCert.secureFilePath)" /p "$(PFX_PASSWORD)" /tr http://timestamp.digicert.com /td sha256 /fd sha256 "$(Build.SourcesDirectory)\bin\Release\app.exe"
    displayName: 'Sign Binary'

  - script: |
      signtool verify /pa "$(Build.SourcesDirectory)\bin\Release\app.exe"
    displayName: 'Verify Signature'

Cloud HSM ile CI/CD Entegrasyonu

Cloud HSM kullanarak PFX dosyası pipeline'a aktarmak zorunda kalmadan imzalama yapabilirsiniz:

DigiCert KeyLocker

# KeyLocker CLI ile imzalama
smctl sign --keypair-alias "my-key" --input app.exe --output app_signed.exe

Certum SimplySign

SimplySign Desktop agent build agent üzerinde çalıştırılarak standart SignTool komutu ile imzalama yapılır.

Güvenlik En İyi Uygulamaları

  1. Sertifika dosyasını repo'ya eklemeyin — her zaman secret/vault kullanın
  2. İmzalama sonrası PFX dosyasını temizleyin — always() bloğunda silme işlemi yapın
  3. En az yetki prensibi: İmzalama secret'larına sadece gerekli pipeline'lar erişebilmeli
  4. Audit log aktif edin: Tüm imzalama işlemlerini kayıt altına alın
  5. Cloud HSM tercih edin: PFX dosyası yerine API tabanlı imzalama daha güvenlidir

Sık Sorulan Sorular

USB Token ile CI/CD pipeline'da imzalama yapabilir miyim?

USB Token fiziksel bağlantı gerektirdiğinden standart CI/CD ortamlarında kullanılamaz. Cloud HSM (DigiCert KeyLocker, Certum SimplySign, Azure Key Vault) veya PFX tabanlı çözümler kullanmanız gerekir.

PFX dosyasını pipeline'da güvenle nasıl saklarım?

GitHub Secrets, Jenkins Credentials, Azure DevOps Secure Files gibi platform sağlanan secret yönetim araçlarını kullanın. PFX dosyasını Base64 olarak encode edip secret olarak saklayabilirsiniz. Pipeline tamamlandığında dosyayı silmeyi unutmayın.

Yazar Ali Yiğit

23 Mart 2026 · 4 dk okuma

Sertifikalar

Önerilen kod imzalama sertifikaları

Tüm ürünler
DigiCert Cloud OV

DigiCert Cloud OV Kod İmzalama

1-3 İş Günü Kuruluş doğrulaması

  • OV Kuruluş Doğrulaması
  • DigiCert Trusted Root Güvencesi
  • Microsoft Authenticode (.exe, .dll, .msi, .cab, .ocx, .sys)
$580,00 %8 indirim $534,00 /yıl
DigiCert Cloud EV

DigiCert Cloud EV Kod İmzalama

1-5 İş Günü Kernel sürücü & WHQL

  • EV Genişletilmiş Doğrulama
  • DigiCert Premium Güvence
  • Microsoft SmartScreen Uyumlu İmza
$1.275,00 %33 indirim $850,00 /yıl
Certum Cloud OV

Certum Standard Cloud Kod İmzalama

1-5 İş Günü Kuruluş doğrulaması

  • Kuruluş (OV) veya bireysel doğrulama
  • Şirketlere, şahıs firmalarına ve bireysel geliştiricilere verilir
  • SimplySign bulut imza — USB token veya kart okuyucu gerekmez
$256,00 %30 indirim $180,00 /yıl
Yorumlar

Yorumlar

Sorularınızı ve deneyimlerinizi paylaşın.

Henüz yorum yapılmamış. İlk yorumu siz yapın.

Yorum yazın

Yorumlar onaylandıktan sonra yayınlanır. E-posta adresiniz yayınlanmaz.

Destek

Sorunuz mu var?

Kod imzalama sertifikası seçimi ve kurulumu için uzman ekibimize ulaşın.