Kod İmzalama Sertifikaları Artık Çok Daha Uygun! — EV ve OV Kod İmzalama sertifikalarında özel kampanya fiyatları!
Anasayfa İletişim
Platform Rehberleri

Cloud Kod İmzalama API Kullanımı (Geliştiriciler İçin)

Cloud Kod İmzalama API ile otomatik kod imzalama nasıl yapılır? REST API entegrasyonu, CI/CD pipeline örnekleri ve güvenli API kullanımı rehberi.

5 dk okuma

Cloud Kod İmzalama platformlarının en güçlü özelliklerinden biri, API tabanlı otomatik imzalama desteğidir. Bu rehberde, cloud signing API ile nasıl programatik olarak kod imzalama yapacağınızı, CI/CD entegrasyon örneklerini ve güvenli API kullanımı pratiklerini anlatıyoruz.

Cloud Signing API Genel Akış

Cloud signing API ile imzalama süreci 4 temel adımdan oluşur:

  1. Kimlik Doğrulama: API anahtarı veya OAuth token ile yetkilendirme
  2. Hash Gönderimi: İmzalanacak dosyanın hash değerinin API endpoint gönderilmesi
  3. İmzalama Onayı: HSM üzerinde hash imzalama (bazı platformlarda 2FA onayı)
  4. İmza Alımı: İmzalanmış hash veya PKCS#7 signature dosyasının alınması

Platform API Karşılaştırması

ÖzellikDigiCert KeyLockerSectigo CodeSignTrustCertum SimplySign
API TipiREST + PKCS11REST + CLIREST
Kimlik DoğrulamaAPI Key + Client CertAPI Key + OAuthOAuth 2.0 + mOTP
Batch İmzalamaEvetEvetSınırlı
Rate Limit1000/gün500/gün100/gün
WebhookEvetEvetHayır
SDKPython, Java, .NETPython, Node.jsJava

API Kullanım Örnekleri

Örnek 1: REST API ile Hash İmzalama (Genel Akış)

# 1. Dosyanın SHA-256 hash hesapla
$hash = (Get-FileHash -Algorithm SHA256 .\myapp.exe).Hash

# 2. API ile imzalama isteği gönder
$headers = @{
    "Authorization" = "Bearer YOUR_API_TOKEN"
    "Content-Type" = "application/json"
}
$body = @{
    "hash" = $hash
    "algorithm" = "SHA256"
    "credential_id" = "YOUR_CREDENTIAL_ID"
} | ConvertTo-Json

$response = Invoke-RestMethod -Uri "https://api.provider.com/v1/sign" -Method POST -Headers $headers -Body $body

# 3. İmza yanıtını al
$signature = $response.signature

Örnek 2: DigiCert KeyLocker PKCS11

# smctl yapılandırma
smctl credentials list

# SignTool ile PKCS11 üzerinden imzalama
# (KeyLocker PKCS11 kütüphanesi SignTool'a entegre edilir)
signtool sign /sha1 CERT_FINGERPRINT /tr http://timestamp.digicert.com /td sha256 /fd sha256 myapp.exe

Örnek 3: Python ile Otomatik İmzalama Script

import hashlib
import requests
import subprocess
import os

class CloudSigner:
    def __init__(self, api_url, api_key, credential_id):
        self.api_url = api_url
        self.headers = {"Authorization": f"Bearer {api_key}"}
        self.credential_id = credential_id

    def sign_file(self, filepath):
        # Hash hesapla
        sha256 = hashlib.sha256()
        with open(filepath, "rb") as f:
            for chunk in iter(lambda: f.read(4096), b""):
                sha256.update(chunk)

        # API isteği
        payload = {
            "hash": sha256.hexdigest(),
            "algorithm": "SHA256",
            "credential_id": self.credential_id
        }
        response = requests.post(
            f"{self.api_url}/sign",
            json=payload,
            headers=self.headers,
            timeout=30
        )
        response.raise_for_status()
        return response.json()["signature"]

# Kullanım
signer = CloudSigner(
    api_url=os.environ["SIGN_API_URL"],
    api_key=os.environ["SIGN_API_KEY"],
    credential_id=os.environ["SIGN_CREDENTIAL_ID"]
)
result = signer.sign_file("build/output/myapp.exe")
print(f"Signed: {result[:32]}...")

CI/CD Entegrasyon Örnekleri

GitHub Actions

name: Build and Sign
on:
  push:
    tags: ['v*']

jobs:
  build-sign:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4

      - name: Build
        run: dotnet publish -c Release -o ./publish

      - name: Install Cloud Signing Client
        run: choco install digicert-keylocker-tools -y

      - name: Configure KeyLocker
        env:
          SM_API_KEY: ${{ secrets.SM_API_KEY }}
          SM_CLIENT_CERT: ${{ secrets.SM_CLIENT_CERT_B64 }}
        run: |
          echo $env:SM_CLIENT_CERT | base64 -d > client.p12
          smctl credentials configure

      - name: Sign Executables
        run: |
          Get-ChildItem ./publish -Include *.exe,*.dll -Recurse | ForEach-Object {
            signtool sign /sha1 $env:CERT_FINGERPRINT /tr http://timestamp.digicert.com /td sha256 /fd sha256 $_.FullName
          }

      - name: Verify Signatures
        run: |
          Get-ChildItem ./publish -Include *.exe,*.dll -Recurse | ForEach-Object {
            signtool verify /pa $_.FullName
          }

Jenkins Pipeline

pipeline {
    agent { label 'windows' }
    environment {
        SIGN_API_KEY = credentials('cloud-sign-api-key')
        CERT_FINGERPRINT = credentials('cert-fingerprint')
    }
    stages {
        stage('Build') {
            steps { bat 'msbuild /p:Configuration=Release' }
        }
        stage('Sign') {
            steps {
                bat """
                    signtool sign /sha1 %CERT_FINGERPRINT% ^
                    /tr http://timestamp.digicert.com ^
                    /td sha256 /fd sha256 ^
                    bin\\Release\\*.exe bin\\Release\\*.dll
                """
            }
        }
        stage('Verify') {
            steps { bat 'signtool verify /pa bin\\Release\\*.exe' }
        }
    }
}

API Güvenlik En İyi Pratikleri

  • Secrets yönetimi: API anahtarlarını asla kaynak kodda saklamayın. CI/CD platform secrets veya vault kullanın.
  • IP kısıtlaması: API erişimini yalnızca CI/CD sunucu IP adreslerine kısıtlayın.
  • Minimum yetki: API anahtarına yalnızca imzalama yetkisi verin, yönetim yetkisi vermeyin.
  • Rate limiting: İmzalama isteklerini makul bir seviyede tutun.
  • Denetim: API kullanım loglarını düzenli olarak inceleyin.

Sıkça Sorulan Sorular (FAQ)

API ile imzalama dosyamı sunucuya yükler mi?

Hayır, çoğu cloud signing API yalnızca hash değerini alır ve imzalar. Dosyanın kendisi hiçbir zaman sunucuya gönderilmez. Bu, hem gizliliği hem de performansı korur.

API rate limiti aşarsam ne olur?

Rate limit aşıldığında HTTP 429 (Too Many Requests) yanıtı alırsınız. Büyük projelerde rate limitin yeterliliğini sağlayıcınızla görüşün. Enterprise planlarda genellikle daha yüksek limitler mevcuttur.

API anahtarım çalınırsa ne olur?

2FA etkinse, API anahtarı tek başına yetersizdir. 2FA olmadan çalışıyorsanız, derhal sağlayıcınıza başvurun ve API anahtarını iptal edin. IP kısıtlaması ve düzenli anahtar rotasyonu bu riski minimize eder.

Bu yazıyı paylaş
Yazar

Ali Yiğit

Önerilen Kod İmzalama Sertifikaları

Tüm Ürünler
CODESIGNING DigiCert

DigiCert Kod İmzalama

DigiCert OV Kod İmzalama. Dünyanın en güvenilir CA'sından Authenticode, Java JAR, Office VBA desteği

$480,00 /yıl
Detaylar
EVCODESIGNING DigiCert

DigiCert EV Kod İmzalama

DigiCert EV Kod İmzalama. SmartScreen anında itibar, WHQL portal erişimi, kernel-mode driver imzalam

$650,00 /yıl
Detaylar
CODESIGNING Sectigo

Sectigo OV Kod İmzalama

Sectigo OV Kod İmzalama sertifikası. FIPS uyumlu USB token dahil. Microsoft Authenticode, Java JAR,

$365,00 /yıl
Detaylar

Yorumlar

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

Yorum Yaz