signtool ksp und Windows KSP-Integration
signtool ksp verwaltet den Windows sslTrus Key Storage Provider (KSP). Nachdem der KSP installiert und konfiguriert ist, kann Microsoft signtool.exe über den CNG-Provider den Remote-Signaturservice aufrufen, ohne den privaten Schlüssel lokal vorzuhalten.
Alle Unterbefehle von signtool ksp unterstützen ausschließlich die Windows-Plattform. Wird ein beliebiger Unterbefehl von ksp auf einer Nicht-Windows-Plattform ausgeführt, wird Folgendes zurückgegeben:
key storage provider is only supported on windows
Übersicht der Unterbefehle
signtool ksp [command]
| Unterbefehl | Zweck |
|---|---|
install | KSP-DLL installieren und registrieren |
uninstall | KSP abmelden und DLL löschen |
list | Gespeicherte KSP-Schlüsselkonfigurationen auflisten |
add | Neue KSP-Schlüsselkonfiguration hinzufügen (interaktiv) |
del | Angegebene KSP-Schlüsselkonfiguration löschen (interaktiv) |
Der Parameter --address ist nur bei ksp add gültig und dient dazu, das Zertifikat-PEM abzurufen und die Adresse des Remote-Dienstes zu speichern.
KSP installieren
signtool ksp install
Nach der Ausführung:
- Schreiben Sie die eingebettete
sslTrusKSP.dllinProgramData/sslTrusKSP/sslTrusKSP.dll. - Wenn sich die DLL-Version in ProgramData von der in System32 unterscheidet, kopieren Sie die DLL nach System32.
- Registrieren Sie den CNG-Provider:
sslTrus Key Storage Provider. - Speichern Sie die KSP-Konfigurationsdatei
ProgramData/sslTrusKSP/config.dat(DPAPI-verschlüsselt).
install ändert die systemweite CNG-Provider-Registrierung. Es wird empfohlen, die Ausführung in einem Administrator-Terminal durchzuführen. Wenn festgestellt wird, dass die DLL-Version identisch ist, wird ksp is already installed protokolliert und direkt zurückgegeben.
KSP deinstallieren
signtool ksp uninstall
Nach der Ausführung:
- Widerrufen Sie den CNG-Provider:
sslTrus Key Storage Provider. - Löschen Sie
ProgramData/sslTrusKSP/sslTrusKSP.dll. - Löschen Sie
sslTrusKSP.dllin System32.
uninstall löscht nicht das gesamte Verzeichnis ProgramData/sslTrusKSP. Gespeicherte config.dat, Zertifikatsdateien und Protokolle müssen manuell bereinigt werden.
Schlüsselkonfiguration anzeigen
signtool ksp list
Erläuterung der Ausgabefelder:
| Feld | Bedeutung |
|---|---|
No | Laufende Nummer |
CertCode | Zertifikatsnummer |
ServerUrl | Anzeige als nicsrs oder default |
AccessKey | Access Key |
AccessSecret | Maskierter Access Secret |
- Wenn keine Konfigurationsdatei vorhanden ist, wird
no ksp configurationzurückgegeben. - Wenn die Konfiguration vorhanden ist, die Schlüsselliste jedoch leer ist, wird
no ksp keyprotokolliert. AccessSecretwird maskiert angezeigt, die Konfigurationsdatei selbst sollte jedoch weiterhin als sensible Datei verwaltet werden.
Schlüsselkonfiguration hinzufügen
signtool ksp add
Geben Sie die NICSRS-Adresse an:
signtool ksp add --address nicsrs
Der Befehl ist interaktiv, geben Sie der Reihe nach Folgendes ein:
Please enter the access key: your-access-key
Please enter the access secret: your-access-secret
Please enter the certificate code: CERT_CODE
Nach der Ausführung:
- Rufen Sie das Remote-
/v1/codesign/certauf, um das Zertifikat-PEM abzurufen. - Speichern Sie das Zertifikat als
ProgramData/sslTrusKSP/CERT_CODE.crt. - Schreiben Sie die Schlüsselkonfiguration in
ProgramData/sslTrusKSP/config.dat(DPAPI-verschlüsselt).
Wenn die Zertifikatsnummer bereits existiert, wird folgender Hinweis angezeigt:
The certificate code already exists, do you want to override it? [y/N]
Geben Sie y ein, um zu überschreiben. Bei anderen Werten oder direktem Drücken der Eingabetaste wird abgebrochen.
ksp add ist ein interaktiver Befehl und unterstützt derzeit keine nicht-interaktiven Parameter wie --access-key oder --cert-code. Beim Hinzufügen der Konfiguration wird eine Remote-API aufgerufen und das Zertifikat-PEM in das lokale ProgramData-Verzeichnis geschrieben.
Schlüsselkonfiguration löschen
signtool ksp del
Interaktive Eingabe der Zertifikatsnummer:
Please enter the certificate code: CERT_CODE
Führen Sie danach die übereinstimmende Schlüsselkonfiguration aus config.dat löschen und speichern Sie die verschlüsselte Konfigurationsdatei erneut.
Die aktuelle Implementierung löscht nur das Konfigurationselement, nicht die Zertifikatsdatei ProgramData/sslTrusKSP/CERT_CODE.crt.
Verwendung von Microsoft signtool.exe über KSP
Nachdem die KSP-Konfiguration abgeschlossen ist, verwenden Sie Microsoft signtool.exe aus dem Windows SDK, um den Provider aufzurufen.
Das signtool.exe in den folgenden Befehlen ist ein Tool, das im Microsoft Windows SDK enthalten ist, nicht die sslTrus-CLI. Wenn beide im aktuellen Verzeichnis oder im PATH vorhanden sind, verwenden Sie bitte den vollständigen Pfad von signtool.exe aus dem Windows SDK, um Verwechslungen zu vermeiden.
Beispiel für SHA256-Signatur:
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
Beispiel für das Hinzufügen einer SHA1-Signatur:
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
Parametererläuterung:
| Parameter | Bedeutung |
|---|---|
/csp "sslTrus Key Storage Provider" | Gibt den KSP-Provider der sslTrus-Installation an |
/kc CERT_CODE | Gibt den Namen des KSP-Schlüssels an, vereinbart als Zertifikatsnummer |
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt | Gibt die von ksp add gespeicherte Zertifikatsdatei an |
/fd SHA256 oder /fd SHA1 | Datei-Hashalgorithmus |
/tr <url> | RFC3161-Zeitstempeldienst |
/td SHA256 | Zeitstempel-Hashalgorithmus |
/as | Signatur anhängen, ohne vorhandene Signaturen zu überschreiben |
Fehlerbehebung als Referenz
| Fehlermeldung | Mögliche Ursache | Lösungsvorschlag |
|---|---|---|
key storage provider is only supported on windows | Der Befehl ksp wurde auf einer Nicht-Windows-Plattform ausgeführt. | Führen Sie KSP-Vorgänge nur unter Windows aus. |
no ksp configuration | Die KSP-Konfigurationsdatei wurde noch nicht erstellt. | Führen Sie zuerst signtool ksp install und signtool ksp add aus. |
no such certificate code | Die Nummer des zu löschenden Zertifikats ist nicht vorhanden. | Verwenden Sie signtool ksp list, um die Zertifikatsnummer zu überprüfen. |
Sicherheitshinweise
signtool ksp installundsigntool ksp uninstalländern das Windows-Systemverzeichnis und die CNG-Provider-Registrierung, in der Regel sind Administratorrechte erforderlich.signtool ksp addgreift auf die Remote-Zertifikatsschnittstelle zu und schreibt die Zertifikatsdateien und die Verschlüsselungskonfiguration inProgramData/sslTrusKSP.- Access Secret, KSP-Konfigurationsdateien und lokale Protokolle sind als vertrauliche Informationen zu behandeln und dürfen nicht in Protokolle oder Versions-Repositories geschrieben werden.