Cloud Code Signing sertifikanızı aldınız, şimdi API ile entegrasyon zamanı. Bu rehberde SignTool, REST API ve PKCS#11 kullanarak cloud imzalama yapmayı ve CI/CD pipeline entegrasyonunu anlatıyoruz.
İmzalama Yöntemleri
| Yöntem | Kullanım Alanı | Zorluk |
|---|---|---|
| SignTool + Platform Client | Manuel ve basit otomasyon | ⭐ Kolay |
| PKCS#11 Library | Cross-platform, native entegrasyon | ⭐⭐ Orta |
| REST API | Tam programatik kontrol | ⭐⭐⭐ İleri |
Yöntem 1: SignTool ile Cloud İmzalama
En basit yöntem. Platform istemcisini (SimplySign, KeyLocker) kurarsınız ve SignTool normal şekilde çalışır.
Certum SimplySign ile SignTool
# 1. SimplySign Desktop kurulu ve oturum açılmış olmalı
# 2. Sertifika otomatik olarak Windows deposuna yüklenir
# İmzalama
signtool sign /n "Şirket Adınız" /tr http://time.certum.pl /td sha256 /fd sha256 /v myapp.exe
# Batch imzalama (klasördeki tüm exe)
Get-ChildItem *.exe | ForEach-Object {
signtool sign /n "Şirket Adınız" /tr http://time.certum.pl /td sha256 /fd sha256 /v $_.FullName
}
# Doğrulama
signtool verify /pa /v myapp.exe
DigiCert KeyLocker ile SignTool
# Ortam değişkenlerini ayarla
$env:SM_HOST = "https://clientauth.one.digicert.com"
$env:SM_API_KEY = "your_api_key"
$env:SM_CLIENT_CERT_FILE = "C:\cert\client_cert.p12"
$env:SM_CLIENT_CERT_PASSWORD = "your_password"
# smctl ile sertifika sync
smctl windows certsync
# SignTool ile imzalama
signtool sign /sha1 THUMBPRINT /tr http://timestamp.digicert.com /td sha256 /fd sha256 /v myapp.exe
Yöntem 2: PKCS#11 Entegrasyonu
PKCS#11, HSM cihazlarıyla iletişim için endüstri standardı API. Java (jarsigner), OpenSSL ve diğer araçlarla kullanılabilir.
# Java JAR imzalama (PKCS#11)
# pkcs11.cfg oluştur
cat > pkcs11.cfg << EOF
name = CloudHSM
library = /opt/certum/libcryptoki.so
slot = 0
EOF
# jarsigner ile imzalama
jarsigner -keystore NONE -storetype PKCS11 \
-providerClass sun.security.pkcs11.SunPKCS11 \
-providerArg pkcs11.cfg \
-tsa http://time.certum.pl \
-signedjar signed-app.jar app.jar "certificate-alias"
Yöntem 3: REST API
Tam programatik kontrol için REST API kullanabilirsiniz. Özellikle DigiCert KeyLocker güçlü bir API sunar.
# Python ile DigiCert Signing Manager API
import hashlib
import requests
import base64
# Dosya hash hesapla
with open('myapp.exe', 'rb') as f:
file_hash = hashlib.sha256(f.read()).hexdigest()
# İmzalama isteği
response = requests.post(
'https://clientauth.one.digicert.com/signingmanager/api/v1/sign',
headers={
'x-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'hash': file_hash,
'hash_algorithm': 'SHA256',
'credential_id': 'your-cert-id',
'signature_format': 'PKCS7'
}
)
signature = response.json()['signature']
print(f"İmza alındı: {len(signature)} karakter")
CI/CD Pipeline Entegrasyonu
GitHub Actions Örneği
# .github/workflows/build-and-sign.yml
name: Build and Sign
on: [push]
jobs:
build-sign:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: dotnet build -c Release
- name: Install signing client
run: |
# Platform istemcisini kur
choco install signtool -y
- name: Sign executable
env:
SM_API_KEY: ${{ secrets.SM_API_KEY }}
run: |
signtool sign /sha1 ${{ secrets.CERT_THUMBPRINT }} /tr http://timestamp.digicert.com /td sha256 /fd sha256 /v bin\Release\app.exe
- name: Verify signature
run: signtool verify /pa /v bin\Release\app.exe
Güvenlik En İyi Pratikleri
- API anahtarlarını asla kodda saklama: Environment variable veya secret manager kullanın
- IP kısıtlama: İmzalama API erişimini belirli IP aralıklarına sınırlayın
- Rate limiting: Beklenmedik yüksek imzalama sayılarına alarm kurun
- Denetim logları: Her imzalamayı loglayın ve düzenli inceleyin
- Timestamp her zaman: Her imzalamada timestamp ekleyin
Sıkça Sorulan Sorular (FAQ)
API key güvenli mi?
API key tek başına imzalama için yeterli değil. Çoğu platform 2FA (mobil onay) veya istemci sertifikası da gerektirir. API key sızdığında bile yetkisiz imzalama yapılamaz.
CI/CD pipeline otomatik imzalama yapabilir mi?
Evet, ancak platform desteğine bağlıdır. DigiCert KeyLocker tam otomasyon destekler. Certum SimplySign ise her imzalama için mobil onay isteyebilir, bu CI/CD otomasyonunu kısıtlayabilir.
Yorumlar
Henüz yorum yapılmamış. İlk yorumu siz yapın!
Yorum Yaz