İçeriğe geç
  1. Ana Sayfa
  2. Blog
  3. Cloud İmzalama
  4. HSM API Entegrasyonu: PKCS#11, JCE ve CNG ile Kod İmzalama
Cloud İmzalama 4 dk okuma

HSM API Entegrasyonu: PKCS#11, JCE ve CNG ile Kod İmzalama

HSM API entegrasyonu nasıl yapılır? PKCS#11, Java JCE ve Microsoft CNG arayüzleri ile kod imzalama uygulamaları geliştirme rehberi.

HSM API Entegrasyonu PKCS#11 JCE CNG

HSM cihazlarıyla programatik olarak iletişim kurmak için standart kriptografik API'ler kullanılır. Bu API'ler sayesinde uygulamalarınız, HSM'deki anahtarları güvenli şekilde kullanarak kod imzalama, şifreleme ve kimlik doğrulama işlemlerini gerçekleştirebilir.

HSM API Standartları

HSM cihazlarıyla iletişim kurmak için 3 temel API standardı kullanılır:

APIPlatformDil/FrameworkKullanım
PKCS#11Cross-platformC, C++, Python, GoEn yaygın HSM API'si
JCEJavaJava, Kotlin, ScalaJava uygulamaları
CNG/CAPIWindowsC#, C++, PowerShellWindows kod imzalama

1. PKCS#11 Entegrasyonu

PKCS#11 (Cryptoki), RSA Laboratories tarafından tanımlanan platformdan bağımsız kriptografik token arayüzüdür. Hemen her HSM sağlayıcı PKCS#11 driver sağlar.

PKCS#11 ile İmzalama (Python)

import pkcs11
from pkcs11 import Mechanism

# HSM kütüphanesini yükle
lib = pkcs11.lib('/opt/cloudhsm/lib/libcloudhsm_pkcs11.so')

# Token üzerinde oturum aç
token = lib.get_token(token_label='hsm0')
session = token.open(user_pin='codesign_user:MyPassword')

# İmzalama anahtarını bul
private_key = session.get_key(
    object_class=pkcs11.ObjectClass.PRIVATE_KEY,
    label='codesigning_key'
)

# Hash'i imzala
signature = private_key.sign(
    data=file_hash,
    mechanism=Mechanism.SHA256_RSA_PKCS
)

print(f"İmza oluşturuldu: {len(signature)} bytes")

PKCS#11 ile OpenSSL Entegrasyonu

# OpenSSL PKCS#11 engine ile CSR oluşturma
openssl req -new -engine pkcs11 \
  -keyform engine \
  -key "pkcs11:token=hsm0;object=codesigning_key" \
  -out codesign.csr \
  -subj "/CN=My Application/O=My Company"

# İmzalama
openssl dgst -sha256 -engine pkcs11 \
  -keyform engine \
  -sign "pkcs11:token=hsm0;object=codesigning_key" \
  -out signature.bin myapp.exe

2. Java JCE Entegrasyonu

JCE (Java Cryptography Extension), Java'nın standart kriptografi framework'üdür. HSM sağlayıcılar JCE Provider sunar.

JCE ile İmzalama (Java)

import java.security.*;

// HSM Provider'ı yükle
Provider hsmProvider = new com.cavium.provider.CaviumProvider();
Security.addProvider(hsmProvider);

// KeyStore üzerinden anahtara erişim
KeyStore ks = KeyStore.getInstance("Cavium");
ks.load(null, null);
PrivateKey privateKey = (PrivateKey) ks.getKey("codesigning_key", null);

// İmzalama
Signature signature = Signature.getInstance("SHA256withRSA", "Cavium");
signature.initSign(privateKey);
signature.update(fileBytes);
byte[] signedData = signature.sign();

System.out.println("İmza başarılı: " + signedData.length + " bytes");

Java JAR İmzalama

# jarsigner ile HSM üzerinden imzalama
jarsigner -keystore NONE -storetype PKCS11 \
  -providerClass sun.security.pkcs11.SunPKCS11 \
  -providerArg pkcs11.cfg \
  -tsa http://timestamp.digicert.com \
  myapp.jar "codesigning_key"

3. Microsoft CNG Entegrasyonu

CNG (Cryptography API: Next Generation), Windows platformundaki modern kriptografik API'dir. SignTool ile doğrudan kullanılır.

CNG ile İmzalama (C#)

using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

// Sertifika deposundan HSM-backed sertifikayı al
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var cert = store.Certificates.Find(
    X509FindType.FindByThumbprint, 
    "THUMBPRINT_HERE", false)[0];

// CNG ile imzalama
using var rsa = cert.GetRSAPrivateKey() as RSACng;
byte[] signature = rsa.SignData(
    fileBytes, 
    HashAlgorithmName.SHA256, 
    RSASignaturePadding.Pkcs1
);

Console.WriteLine($"İmza başarılı: {signature.Length} bytes");

SignTool ile Windows İmzalama

# HSM provider üzerinden signtool ile imzalama
signtool sign /sha1 <THUMBPRINT> ^
  /tr http://timestamp.digicert.com ^
  /td sha256 /fd sha256 ^
  /csp "HSM_Provider_Name" ^
  MyApp.exe

# İmza doğrulama
signtool verify /pa /v MyApp.exe

API Seçim Rehberi

SenaryoÖnerilen API
Cross-platform uygulamaPKCS#11
Java uygulaması / JAR imzalamaJCE
Windows EXE/DLL imzalamaCNG + SignTool
Python skriptingPKCS#11 (python-pkcs11)
Go uygulamasıPKCS#11 (miekg/pkcs11)
CI/CD otomasyonuCLI araçları (signtool, jarsigner)

Hata Yönetimi ve En İyi Uygulamalar

  • Bağlantı havuzu: HSM oturumlarını yeniden kullanarak performansı artırın
  • Retry mekanizması: Geçici hatalar için exponential backoff uygulayın
  • Timeout: Her HSM çağrısına makul timeout belirleyin
  • Loglama: Her imzalama işlemini loglayın ama kimlik bilgilerini asla loglamayın
  • Hata izolasyonu: HSM hataları uygulama çökmesine yol açmamalı

Sonuç

HSM API entegrasyonu, kod imzalama sürecinizi otomatikleştirmenin ve güvenliğini artırmanın anahtarıdır. İhtiyacınıza uygun API'yi seçerek (PKCS#11, JCE veya CNG), HSM'deki anahtarlarınızla programatik olarak imzalama yapabilirsiniz.

Yazar Ali Yiğit

10 Nisan 2026 · 4 dk okuma

Sertifikalar

Önerilen kod imzalama sertifikaları

Tüm ürünler
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
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
Certum Cloud EV

Certum Cloud EV Kod İmzalama

1-7 İş Günü Genişletilmiş doğrulama

  • Genişletilmiş (EV) kuruluş doğrulaması
  • Yalnızca kayıtlı şirketlere verilir
  • SimplySign bulut imza — USB token veya kart okuyucu gerekmez
$650,00 %35 indirim $420,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.