Zum Hauptinhalt springen

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.

Hinweis

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]
UnterbefehlZweck
installKSP-DLL installieren und registrieren
uninstallKSP abmelden und DLL löschen
listGespeicherte KSP-Schlüsselkonfigurationen auflisten
addNeue KSP-Schlüsselkonfiguration hinzufügen (interaktiv)
delAngegebene KSP-Schlüsselkonfiguration löschen (interaktiv)
Hinweis

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:

  1. Schreiben Sie die eingebettete sslTrusKSP.dll in ProgramData/sslTrusKSP/sslTrusKSP.dll.
  2. Wenn sich die DLL-Version in ProgramData von der in System32 unterscheidet, kopieren Sie die DLL nach System32.
  3. Registrieren Sie den CNG-Provider: sslTrus Key Storage Provider.
  4. Speichern Sie die KSP-Konfigurationsdatei ProgramData/sslTrusKSP/config.dat (DPAPI-verschlüsselt).
Hinweis

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:

  1. Widerrufen Sie den CNG-Provider: sslTrus Key Storage Provider.
  2. Löschen Sie ProgramData/sslTrusKSP/sslTrusKSP.dll.
  3. Löschen Sie sslTrusKSP.dll in System32.
Hinweis

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:

FeldBedeutung
NoLaufende Nummer
CertCodeZertifikatsnummer
ServerUrlAnzeige als nicsrs oder default
AccessKeyAccess Key
AccessSecretMaskierter Access Secret
Hinweis
  • Wenn keine Konfigurationsdatei vorhanden ist, wird no ksp configuration zurückgegeben.
  • Wenn die Konfiguration vorhanden ist, die Schlüsselliste jedoch leer ist, wird no ksp key protokolliert.
  • AccessSecret wird 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:

  1. Rufen Sie das Remote-/v1/codesign/cert auf, um das Zertifikat-PEM abzurufen.
  2. Speichern Sie das Zertifikat als ProgramData/sslTrusKSP/CERT_CODE.crt.
  3. 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.

Hinweis

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.

Hinweis

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.

Achtung

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:

ParameterBedeutung
/csp "sslTrus Key Storage Provider"Gibt den KSP-Provider der sslTrus-Installation an
/kc CERT_CODEGibt den Namen des KSP-Schlüssels an, vereinbart als Zertifikatsnummer
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crtGibt die von ksp add gespeicherte Zertifikatsdatei an
/fd SHA256 oder /fd SHA1Datei-Hashalgorithmus
/tr <url>RFC3161-Zeitstempeldienst
/td SHA256Zeitstempel-Hashalgorithmus
/asSignatur anhängen, ohne vorhandene Signaturen zu überschreiben

Fehlerbehebung als Referenz

FehlermeldungMögliche UrsacheLösungsvorschlag
key storage provider is only supported on windowsDer Befehl ksp wurde auf einer Nicht-Windows-Plattform ausgeführt.Führen Sie KSP-Vorgänge nur unter Windows aus.
no ksp configurationDie KSP-Konfigurationsdatei wurde noch nicht erstellt.Führen Sie zuerst signtool ksp install und signtool ksp add aus.
no such certificate codeDie Nummer des zu löschenden Zertifikats ist nicht vorhanden.Verwenden Sie signtool ksp list, um die Zertifikatsnummer zu überprüfen.

Sicherheitshinweise

  • signtool ksp install und signtool ksp uninstall ändern das Windows-Systemverzeichnis und die CNG-Provider-Registrierung, in der Regel sind Administratorrechte erforderlich.
  • signtool ksp add greift auf die Remote-Zertifikatsschnittstelle zu und schreibt die Zertifikatsdateien und die Verschlüsselungskonfiguration in ProgramData/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.