İçeriğe geç
  1. Ana Sayfa
  2. Blog
  3. Platform Rehberleri
  4. Cloud Kod İmzalama API Kullanımı (Geliştiriciler İçin)
Platform Rehberleri 5 dk okuma

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.

Cloud Kod İmzalama API Kullanım Rehberi

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.

Yazar Ali Yiğit

28 Mart 2026 · 5 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.