Kendi Anahtarınızı Getirin — 10 Sağlayıcı

Tüm sağlayıcılar IsgcKeyProvider arabirimini uygular — aynı imzalama kodu yerel dosyalara, akıllı kartlara, HSM'lere, bulut KMS'ye veya uzak QTSP'lere karşı çalışır. Tek satırla geçiş yapın.

Yerel Dosyalar (PFX, PEM)
Donanım (PKCS#11)
Bulut KMS (Azure, AWS, GCP)
QTSP'ler (Certum, CSC v2)

TsgcPFXKeyProvider

PFX / PKCS#12 dosyaları. Yerel parola korumalı anahtar. Geliştirme, küçük dağıtımlar ve sertifikanın tek bir .pfx/.p12 dosyası olarak geldiği herhangi bir iş akışı için idealdir.

  • PKCS12_PREFER_CNG_KSP ile Windows CNG aracılığıyla içe aktarılır — SHA-256/384/512 imzalama, orijinal CSP'den bağımsız olarak çalışır.
  • Çok sertifikalı .pfx dosyaları, özel anahtara sahip sertifika bulunana kadar otomatik olarak taranır.
pfx.pas
var
  vPFX: TsgcPFXKeyProvider;
begin
  vPFX := TsgcPFXKeyProvider.Create(nil);
  try
    vPFX.FileName := 'certificate.pfx';
    vPFX.Password := 'mypassword';
    vPFX.LoadFromFile;
    // vSigner.KeyProvider := vPFX;
  finally
    vPFX.Free;
  end;
end;

TsgcPEMKeyProvider

PEM dosyaları. Yerel PBES2 / PBKDF2 / AES-CBC desteğiyle şifrelenmiş PKCS#8, ayrıca eski RSA özel anahtar DEK-Info biçimi. OpenSSL tabanlı hatlar için idealdir.

  • BEGIN CERTIFICATE, BEGIN RSA PRIVATE KEY, BEGIN PRIVATE KEY, BEGIN ENCRYPTED PRIVATE KEY tümü desteklenir.
  • Birleşik PEM'ler (tek dosyada sertifika + anahtar) otomatik olarak algılanır — PrivateKeyFile'ı boş bırakın.
pem.pas
var
  vPEM: TsgcPEMKeyProvider;
begin
  vPEM := TsgcPEMKeyProvider.Create(nil);
  try
    vPEM.CertificateFile := 'cert.pem';
    vPEM.PrivateKeyFile  := 'key.pem';
    vPEM.PrivateKeyPassword := 'secret';
    vPEM.LoadFromFile;
    // vSigner.KeyProvider := vPEM;
  finally
    vPEM.Free;
  end;
end;

TsgcWindowsCertStoreProvider

Windows Sertifika Deposu. Yerel makine ve geçerli kullanıcı depoları. Mevcut AD tarafından verilen sertifikaları kullanan masaüstü uygulamaları veya Windows'un sertifika yaşam döngüsünü zaten yönettiği herhangi bir dağıtım için idealdir.

  • İmzalama Windows CNG aracılığıyla gerçekleşir — özel anahtar depodan asla çıkmaz.
  • Konu CN alt dizesine veya SHA-1 parmak iziyle seçim.
winstore.pas
var
  vStore: TsgcWindowsCertStoreProvider;
begin
  vStore := TsgcWindowsCertStoreProvider.Create(nil);
  try
    vStore.StoreName := 'MY';
    vStore.StoreLocation := cslCurrentUser;
    vStore.SelectCertificateBySubject('My Company');
    // vSigner.KeyProvider := vStore;
  finally
    vStore.Free;
  end;
end;

TsgcPKCS11Provider

PKCS#11 / Donanım Belirteçleri. Akıllı kartlar, USB belirteçleri, HSM'ler — SafeNet, YubiKey, Nitrokey, Thales. Çoğu AB yargı bölgesinde Nitelikli Elektronik İmzalar için gereklidir.

  • CKM_RSA_PKCS ve CKM_ECDSA_SHA256 mekanizmaları desteklenir.
  • Çalışma zamanında doğru yuvayı seçmek için EnumerateSlots / EnumerateCertificates yardımcıları.
pkcs11.pas
var
  vTok: TsgcPKCS11Provider;
begin
  vTok := TsgcPKCS11Provider.Create(nil);
  try
    vTok.LibraryPath := 'C:\token\pkcs11.dll';
    vTok.SlotIndex := 0;
    vTok.PIN := '1234';
    vTok.CertificateLabel := 'MyCert';
    vTok.Connect;
    // vSigner.KeyProvider := vTok;
  finally
    vTok.Free;
  end;
end;

TsgcAzureTrustedSigningProvider

Azure Trusted Signing. Microsoft'un nitelikli kod imzalama hizmeti. EV sertifikası satın almadan Authenticode — Microsoft sertifikaya sahiptir ve imzalama anahtarını sizin için sağlar.

  • OAuth2 istemci kimlik bilgileri — Tenant ID + Client ID + Client Secret.
  • Özel anahtarlar tamamen Azure'da bulunur, derleme aracısında asla bulunmaz.
azure-ts.pas
var
  vAzure: TsgcAzureTrustedSigningProvider;
begin
  vAzure := TsgcAzureTrustedSigningProvider.Create(nil);
  try
    vAzure.TenantId := 'your-tenant-id';
    vAzure.ClientId := 'your-client-id';
    vAzure.ClientSecret := 'your-client-secret';
    vAzure.AccountName := 'mySigningAccount';
    vAzure.CertificateProfileName := 'default';
    vAzure.Connect;
    // vSigner.KeyProvider := vAzure;
  finally
    vAzure.Free;
  end;
end;

TsgcAWSKMSKeyProvider

AWS Key Management Service. Amazon'un HSM destekli anahtar saklama hizmeti. Özel anahtarı açığa çıkarmadan bulutta imzalama için AWS tarafından verilen bir sertifikayla eşleştirin.

  • Süreç içinde hesaplanan AWS Signature Version 4 kimlik doğrulaması.
  • KeyId, anahtar kimliğini, anahtar ARN'sini veya takma ad ARN'sini kabul eder.
aws-kms.pas
var
  vAWS: TsgcAWSKMSKeyProvider;
begin
  vAWS := TsgcAWSKMSKeyProvider.Create(nil);
  try
    vAWS.AccessKeyId := 'AKIAIOSFODNN7EXAMPLE';
    vAWS.SecretAccessKey := 'wJalrXUtnFEMI/K7MDENG/...';
    vAWS.Region := 'us-east-1';
    vAWS.KeyId := 'arn:aws:kms:us-east-1:...:key/my-key';
    vAWS.Connect;
    // vSigner.KeyProvider := vAWS;
  finally
    vAWS.Free;
  end;
end;

TsgcGCloudKMSKeyProvider

Google Cloud KMS. AWS KMS ile aynı işletim modeli. Hizmet hesabı JSON dosyası, JWT değişimi aracılığıyla OAuth2 erişim belirtecine kimlik doğrular, ardından Cloud KMS API aracılığıyla imzalar.

  • ProjectId + Location + KeyRing + Key + Version — GCP kaynak hiyerarşisiyle 1:1 eşleşir.
  • Yalnızca asimetrik KMS anahtarları — mevcut olduğunda HSM destekli, aksi takdirde yazılım korumalı.
gcloud-kms.pas
var
  vGCloud: TsgcGCloudKMSKeyProvider;
begin
  vGCloud := TsgcGCloudKMSKeyProvider.Create(nil);
  try
    vGCloud.ProjectId := 'my-project';
    vGCloud.LocationId := 'global';
    vGCloud.KeyRingId := 'my-key-ring';
    vGCloud.KeyId := 'my-signing-key';
    vGCloud.KeyVersion := '1';
    vGCloud.ServiceAccountJSON := 'C:\keys\sa.json';
    vGCloud.Connect;
    // vSigner.KeyProvider := vGCloud;
  finally
    vGCloud.Free;
  end;
end;

TsgcHashiCorpVaultKeyProvider

HashiCorp Vault. Vault'un Transit gizli dizi motoru imzalamayı gerçekleştirir. Vault'un zaten yığının parçası olduğu kendi sunucunuzda barındırılan, politika güdümlü anahtar saklama için idealdir.

  • Transit motoru yalnızca anahtarı yönetir — sertifikayı SetCertificateFromFile aracılığıyla sağlayın.
  • Belirteç tabanlı kimlik doğrulama; mount yolu varsayılan olarak 'transit''tir.
vault.pas
var
  vVault: TsgcHashiCorpVaultKeyProvider;
begin
  vVault := TsgcHashiCorpVaultKeyProvider.Create(nil);
  try
    vVault.VaultAddress := 'https://vault.example.com:8200';
    vVault.Token := 's.myVaultToken';
    vVault.MountPath := 'transit';
    vVault.KeyName := 'my-signing-key';
    vVault.Connect;
    vVault.SetCertificateFromFile('C:\certs\signing-cert.pem');
    // vSigner.KeyProvider := vVault;
  finally
    vVault.Free;
  end;
end;

TsgcCertumSimplySignProvider

Certum SimplySign. Polonya QTSP'si. Mobil uygulama yetkili PIN aracılığıyla nitelikli elektronik imzalar, USB belirteci gerekmez. Polonya KSeF ve ZUS iş akışları için yaygın bir seçim.

  • OAuth2 istemci kimlik bilgileri + SimplySign hesabı kullanıcı adı/parola + PIN.
  • ListCertificates, hesapta bulunan her sertifikayı sunar.
certum.pas
var
  vCertum: TsgcCertumSimplySignProvider;
begin
  vCertum := TsgcCertumSimplySignProvider.Create(nil);
  try
    vCertum.ClientId := 'your-client-id';
    vCertum.ClientSecret := 'your-client-secret';
    vCertum.Username := 'user@example.com';
    vCertum.Password := 'account-password';
    vCertum.PIN := '123456';
    vCertum.BaseURL := 'https://cloudsign.certum.pl';
    vCertum.Connect;
    // vSigner.KeyProvider := vCertum;
  finally
    vCertum.Free;
  end;
end;

TsgcCSCKeyProvider

Cloud Signature Consortium API v2. CSC v2'yi uygulayan herhangi bir QTSP'ye genel arabirim — Universign, D-Trust sign-me, A-Trust, FNMT Cl@ve Firma, Evrotrust, Intesi Group. Sağlayıcı, nitelikli anahtarı uzak bir QSCD'de tutar; sgcSign yalnızca belge karmasını gönderir.

  • Üç kimlik doğrulama modu: cscBasic, cscOAuth2, cscOTP (iki faktör için tek seferlik parola).
  • CSC v2 spesifikasyonuna göre credentials/authorize + signatures/signHash çağırır.
csc-v2.pas
var
  vCSC: TsgcCSCKeyProvider;
  vCreds: TStringArray;
begin
  vCSC := TsgcCSCKeyProvider.Create(nil);
  try
    vCSC.BaseURL := 'https://api.qtsp.example/csc/v2';
    vCSC.AuthMethod := cscBasic;
    vCSC.Username := 'alice';
    vCSC.Password := 'secret';
    vCreds := vCSC.ListCredentials;
    vCSC.CredentialID := vCreds[0];
    vCSC.PIN := '123456';
    vCSC.OTP := '987654';
    vCSC.LoadCredentialInfo;
    // vSigner.KeyProvider := vCSC;
  finally
    vCSC.Free;
  end;
end;

Tek Satırla Değiştirin

Her sağlayıcı IsgcKeyProvider uygular. İmzalayıcı kodu, anahtarın diskte mi, bir belirteçte mi, Azure'da mı yoksa bir CSC v2 API'sinin arkasında mı bulunduğunu asla bilmez.

Bir imzalayıcı, on sağlayıcı

  • Yerel bir PFX ile geliştirin. Windows deposuyla test edin. Azure Trusted Signing'e dağıtın.
  • Ülke profilleri, imza düzeyleri, OCSP, zaman damgaları — diğer her şey aynı kalır.
  • sgcSign Server aynı sağlayıcıları dahili olarak kullanır — önce yerel olarak merkezileştirin, daha sonra bir hizmete ölçeklendirin.
swap-providers.pas
function SignWithAnyProvider(
  aProvider: IsgcKeyProvider; const aXML: string): string;
var
  vSigner: TsgcXAdESSigner;
begin
  vSigner := TsgcXAdESSigner.Create(nil);
  try
    vSigner.KeyProvider := aProvider;
    vSigner.Profile.LoadProfile(spEmploymentDE);
    Result := vSigner.SignXML(aXML);
  finally
    vSigner.Free;
  end;
end;

// Caller picks the provider; signer doesn't care.
SignWithAnyProvider(vPFX, vXML);
SignWithAnyProvider(vAzure, vXML);
SignWithAnyProvider(vCSC, vXML);

Güven Modeliniz için Doğru Sağlayıcıyı Seçin

Yerel bir .pfx'ten başka bir kıtadaki bir HSM'ye kadar — imzalama kodu aynı kalır.