signtool ksp ile Windows KSP entegrasyonu
signtool ksp Windows sslTrus Key Storage Provider(KSP)yönetir. KSP kurulumu ve yapılandırması tamamlandıktan sonra, Microsoft signtool.exe, CNG Provider aracılığıyla uzak imzalama hizmetini çağırabilir; yerel olarak özel anahtara sahip olması gerekmez.
signtool ksp tüm alt komutları yalnızca Windows platformunu destekler. Windows dışındaki platformlarda herhangi bir ksp alt komutunu çalıştırmak şu hatayı döndürür:
key storage provider is only supported on windows
Alt Komut Genel Bakışı
signtool ksp [command]
| Alt komut | Amaç |
|---|---|
install | KSP DLL’yi kurar ve kaydeder |
uninstall | KSP’yi kayıttan çıkarır ve DLL’yi siler |
list | Kaydedilmiş KSP anahtar yapılandırmalarını listeler |
add | Yeni KSP anahtar yapılandırması ekler (etkileşimli) |
del | Belirtilen KSP anahtar yapılandırmasını siler (etkileşimli) |
--address parametresi yalnızca ksp add olduğunda geçerlidir; sertifika PEM’ini almak ve uzak hizmet adresini kaydetmek için kullanılır.
KSP Kurulumu
signtool ksp install
Yürütme sonrası:
- İçe gömülü
sslTrusKSP.dlldeğeriniProgramData/sslTrusKSP/sslTrusKSP.dlliçine yazın. - ProgramData içindeki DLL sürümü System32 içindekinden farklıysa, DLL'yi System32'ye kopyalayın.
- CNG Sağlayıcısını kaydedin:
sslTrus Key Storage Provider. - KSP yapılandırma dosyasını
ProgramData/sslTrusKSP/config.dat(DPAPI şifreli) olarak kaydedin.
install sistem düzeyindeki CNG Sağlayıcı kaydını değiştirir; yönetici terminalinde çalıştırmanız önerilir. DLL sürümlerinin aynı olduğu tespit edilirse, ksp is already installed kaydedilir ve doğrudan geri dönülür.
KSP'yi Kaldırma
signtool ksp uninstall
Çalıştırıldıktan sonra:
- CNG Sağlayıcısını kaydını silin:
sslTrus Key Storage Provider。 ProgramData/sslTrusKSP/sslTrusKSP.dllöğesini silin。- System32 içindeki
sslTrusKSP.dllöğesini silin。
uninstall tüm ProgramData/sslTrusKSP dizinini silmez. Kaydedilmiş config.dat, sertifika dosyaları ve günlükler manuel olarak temizlenmelidir.
Anahtar Yapılandırmasını Görüntüle
signtool ksp list
Çıktı alanı açıklaması:
| Alan | Anlam |
|---|---|
No | Sıra numarası |
CertCode | Sertifika numarası |
ServerUrl | nicsrs veya default olarak gösterilir |
AccessKey | Access Key |
AccessSecret | Gizlenmiş Access Secret |
- Yapılandırma dosyası yoksa,
no ksp configurationdöndürülür.
- Yapılandırma mevcut olduğu hâlde anahtar listesi boşsa
no ksp keykaydedilir. AccessSecretmaskelenerek gösterilir; ancak yapılandırma dosyasının kendisi yine de hassas bir dosya olarak yönetilmelidir. :::
Anahtar yapılandırması ekleme
signtool ksp add
Belirtilen NICSRS adresini girin:
signtool ksp add --address nicsrs
Komut etkileşimlidir, sırayla giriş yapın:
Please enter the access key: your-access-key
Please enter the access secret: your-access-secret
Please enter the certificate code: CERT_CODE
Yürütme sonrası:
- Sertifika PEM'ini almak için uzak
/v1/codesign/certçağrısı yapılır. - Sertifika
ProgramData/sslTrusKSP/CERT_CODE.crtolarak kaydedilir. - Anahtar yapılandırması
ProgramData/sslTrusKSP/config.dat(DPAPI şifrelemesi ile) yazılır.
Sertifika numarası zaten mevcutsa, şu uyarı gösterilir:
The certificate code already exists, do you want to override it? [y/N]
Üzerine yazmak için y girin; başka bir değer girerseniz veya doğrudan Enter'a basarsanız işlem iptal edilir.
ksp add etkileşimli bir komuttur; şu anda --access-key ve --cert-code gibi etkileşimsiz parametreleri desteklemez. Yapılandırma eklenirken uzak API'ye erişilir ve sertifika PEM dosyası yerel ProgramData dizinine yazılır.
Anahtar yapılandırmasını silme
signtool ksp del
Etkileşimli olarak sertifika numarasını girin:
Please enter the certificate code: CERT_CODE
config.dat içinden eşleşen anahtar yapılandırmasını silin ve şifrelenmiş yapılandırma dosyasını yeniden kaydedin.
Mevcut uygulama yalnızca yapılandırma öğesini siler, ProgramData/sslTrusKSP/CERT_CODE.crt sertifika dosyasını silmez.
KSP ile Microsoft signtool.exe Kullanımı
KSP yapılandırması tamamlandıktan sonra, Windows SDK içindeki Microsoft signtool.exe ile Provider'ı çağırın.
Aşağıdaki komuttaki signtool.exe, Microsoft Windows SDK ile birlikte gelen bir araçtır, sslTrus CLI değildir. Geçerli dizinde veya PATH'te her ikisi de mevcutsa, karışıklığı önlemek için Windows SDK içindeki signtool.exe tam yolunu kullanın.
SHA256 imza örneği:
signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt ^
/fd SHA256 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
.\EXAMPLE.exe
SHA1 imzası ekleme örneği:
signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt ^
/fd SHA1 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
/as ^
.\EXAMPLE.exe
Parametre Açıklamaları:
| Parametre | Anlam |
|---|---|
/csp "sslTrus Key Storage Provider" | sslTrus kurulumu için KSP Sağlayıcıyı belirtir |
/kc CERT_CODE | KSP anahtar adını belirtir; kural olarak sertifika numarasıdır |
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt | ksp add tarafından kaydedilen sertifika dosyasını belirtir |
/fd SHA256 veya /fd SHA1 | Dosya özet algoritması |
/tr <url> | RFC3161 zaman damgası hizmeti |
/td SHA256 | Zaman damgası özet algoritması |
/as | İmzaya ekle, mevcut imzayı üzerine yazma |
Sorun Giderme Referansı
| Hata Mesajı | Olası Neden | Çözüm Önerisi |
|---|---|---|
key storage provider is only supported on windows | ksp komutu Windows dışı bir platformda çalıştırıldı. | KSP işlemlerini yalnızca Windows üzerinde gerçekleştirin. |
no ksp configuration | KSP yapılandırma dosyası henüz oluşturulmadı. | Önce signtool ksp install ve signtool ksp add komutlarını çalıştırın. |
no such certificate code | Silinen sertifika numarası mevcut değil. | Sertifika numarasını doğrulamak için signtool ksp list komutunu kullanın. |
Güvenlik Önlemleri
signtool ksp installvesigntool ksp uninstall, Windows sistem dizinini ve CNG Sağlayıcı kaydını değiştirir ve genellikle yönetici ayrıcalıkları gerektirir.signtool ksp add, uzak sertifika arayüzüne erişir ve sertifika dosyası ile şifreleme yapılandırmasınıProgramData/sslTrusKSPkonumuna yazar.- Access Secret, KSP yapılandırma dosyası ve yerel günlükler hassas bilgiler olarak ele alınmalı; günlüklere veya sürüm deposuna yazılmamalıdır.