Zum Hauptinhalt springen

Integration von signtool ksp mit Windows KSP

signtool ksp verwaltet den Windows-Provider sslTrus Key Storage Provider (KSP). Nach der Installation und Konfiguration des KSP kann Microsoft signtool.exe den Remote-Signaturdienst über den CNG-Provider aufrufen, ohne den privaten Schlüssel lokal vorzuhalten.

Achtung

Alle Unterbefehle von signtool ksp werden nur unter Windows unterstützt. Wenn Sie auf einer anderen Plattform einen ksp-Unterbefehl ausführen, 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 wirksam und dient zum Abrufen des Zertifikats-PEM sowie zum Speichern der Remote-Dienstadresse.


KSP installieren​

signtool ksp install

Nach der Ausführung:

  1. Wird die eingebettete sslTrusKSP.dll nach ProgramData/sslTrusKSP/sslTrusKSP.dll geschrieben.
  2. Wird die DLL nach System32 kopiert, falls sich die DLL-Version in ProgramData von der Version in System32 unterscheidet.
  3. Wird der CNG-Provider sslTrus Key Storage Provider registriert.
  4. Wird die KSP-Konfigurationsdatei ProgramData/sslTrusKSP/config.dat mit DPAPI-Verschlüsselung gespeichert.
Achtung

install ändert die systemweite Registrierung des CNG-Providers und sollte in einem Administrator-Terminal ausgeführt werden. Wird dieselbe DLL-Version erkannt, wird ksp is already installed protokolliert und der Befehl sofort beendet.


Deinstallation des KSP​

signtool ksp uninstall

Nach der Ausführung:

  1. CNG-Provider abmelden: sslTrus Key Storage Provider.
  2. ProgramData/sslTrusKSP/sslTrusKSP.dll löschen.
  3. sslTrusKSP.dll in System32 löschen.
Hinweis

uninstall löscht nicht das gesamte ProgramData/sslTrusKSP-Verzeichnis. Bereits gespeicherte config.dat, Zertifikatsdateien und Protokolle müssen manuell bereinigt werden.


Schlüsselkonfiguration anzeigen​

signtool ksp list

Beschreibung der Ausgabefelder:

FeldBedeutung
NoLaufende Nummer
CertCodeZertifikatsnummer
ServerUrlWird als nicsrs oder default angezeigt
AccessKeyAccess Key
AccessSecretMaskiertes Access Secret
Hinweis
  • Wenn keine Konfigurationsdatei vorhanden ist, wird no ksp configuration zurückgegeben.
  • Wenn die Konfiguration vorhanden ist, aber die Schlüsselliste leer ist, wird no ksp key protokolliert.
  • AccessSecret wird maskiert angezeigt, aber die Konfigurationsdatei selbst sollte 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 nacheinander 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 entfernte /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).

Falls die Zertifikatsnummer bereits vorhanden ist, wird Folgendes angezeigt:

The certificate code already exists, do you want to override it? [y/N]

Gib y ein, um zu überschreiben; andere Werte oder direktes Drücken der Eingabetaste brechen ab.

Hinweis

ksp add ist ein interaktiver Befehl; nicht-interaktive Parameter wie --access-key, --cert-code werden derzeit nicht unterstützt. Das Hinzufügen einer Konfiguration greift auf die Remote-API zu und schreibt das Zertifikat-PEM in das lokale ProgramData-Verzeichnis.


Schlüsselkonfiguration löschen​

signtool ksp del

Interaktive Eingabe der Zertifikatsnummer:

Please enter the certificate code: CERT_CODE

Nach der Ausführung werden die passenden Schlüsselkonfigurationen aus config.dat entfernt und die verschlüsselte Konfigurationsdatei erneut gespeichert.

Hinweis

Die aktuelle Implementierung entfernt nur die Konfigurationseinträge, nicht die Zertifikatsdatei ProgramData/sslTrusKSP/CERT_CODE.crt.


Verwenden von Microsoft signtool.exe über KSP​

Nach Abschluss der KSP-Konfiguration verwenden Sie das Microsoft signtool.exe aus dem Windows SDK, um den Provider aufzurufen.

Achtung

Das signtool.exe in den folgenden Befehlen ist ein im Microsoft Windows SDK enthaltenes Tool, nicht die sslTrus-CLI. Falls beide im aktuellen Verzeichnis oder im PATH vorhanden sind, verwenden Sie 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

Parameterbeschreibung:

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

Fehlersuche-Referenz​

FehlermeldungMögliche UrsacheBehandlungsvorschlag
key storage provider is only supported on windowsDer Befehl ksp wurde auf einer Nicht-Windows-Plattform ausgeführt.Führen Sie KSP-Operationen 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 Zertifikatsnummer, die gelöscht werden soll, existiert nicht.Verwenden Sie signtool ksp list, um die Zertifikatsnummer zu bestätigen.

Sicherheitshinweise​

  • signtool ksp install und signtool ksp uninstall ändern das Windows-Systemverzeichnis und die CNG-Provider-Registrierung, was normalerweise Administratorrechte erfordert.
  • signtool ksp add greift auf die Remote-Zertifikatsschnittstelle zu und schreibt die Zertifikatsdatei sowie die Verschlüsselungskonfiguration in ProgramData/sslTrusKSP.
  • Access Secret, die KSP-Konfigurationsdatei und lokale Protokolle sollten als sensible Informationen behandelt und weder in Protokolle noch in Versionsverzeichnisse geschrieben werden.