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.
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]
| 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 wirksam und dient zum Abrufen des Zertifikats-PEM sowie zum Speichern der Remote-Dienstadresse.
KSP installieren
signtool ksp install
Nach der Ausführung:
- Wird die eingebettete
sslTrusKSP.dllnachProgramData/sslTrusKSP/sslTrusKSP.dllgeschrieben. - Wird die DLL nach System32 kopiert, falls sich die DLL-Version in ProgramData von der Version in System32 unterscheidet.
- Wird der CNG-Provider
sslTrus Key Storage Providerregistriert. - Wird die KSP-Konfigurationsdatei
ProgramData/sslTrusKSP/config.datmit DPAPI-Verschlüsselung gespeichert.
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:
- CNG-Provider abmelden:
sslTrus Key Storage Provider. ProgramData/sslTrusKSP/sslTrusKSP.dlllöschen.sslTrusKSP.dllin System32 löschen.
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:
| Feld | Bedeutung |
|---|---|
No | Laufende Nummer |
CertCode | Zertifikatsnummer |
ServerUrl | Wird als nicsrs oder default angezeigt |
AccessKey | Access Key |
AccessSecret | Maskiertes Access Secret |
- Wenn keine Konfigurationsdatei vorhanden ist, wird
no ksp configurationzurückgegeben.
- Wenn die Konfiguration vorhanden ist, aber die Schlüsselliste leer ist, wird
no ksp keyprotokolliert. AccessSecretwird 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:
- Rufen Sie das entfernte
/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).
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.
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.
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.
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:
| Parameter | Bedeutung |
|---|---|
/csp "sslTrus Key Storage Provider" | Gibt den KSP-Provider der sslTrus-Installation an |
/kc CERT_CODE | Gibt den KSP-Schlüsselnamen an, der als Zertifikatsnummer festgelegt ist |
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt | Gibt die von ksp add gespeicherte Zertifikatsdatei an |
/fd SHA256 oder /fd SHA1 | Datei-Digest-Algorithmus |
/tr <url> | RFC3161-Zeitstempeldienst |
/td SHA256 | Zeitstempel-Digest-Algorithmus |
/as | Signatur anhängen, ohne vorhandene Signaturen zu überschreiben |
Fehlersuche-Referenz
| Fehlermeldung | Mögliche Ursache | Behandlungsvorschlag |
|---|---|---|
key storage provider is only supported on windows | Der Befehl ksp wurde auf einer Nicht-Windows-Plattform ausgeführt. | Führen Sie KSP-Operationen 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 Zertifikatsnummer, die gelöscht werden soll, existiert nicht. | Verwenden Sie signtool ksp list, um die Zertifikatsnummer zu bestätigen. |
Sicherheitshinweise
signtool ksp installundsigntool ksp uninstalländern das Windows-Systemverzeichnis und die CNG-Provider-Registrierung, was normalerweise Administratorrechte erfordert.signtool ksp addgreift auf die Remote-Zertifikatsschnittstelle zu und schreibt die Zertifikatsdatei sowie die Verschlüsselungskonfiguration inProgramData/sslTrusKSP.- Access Secret, die KSP-Konfigurationsdatei und lokale Protokolle sollten als sensible Informationen behandelt und weder in Protokolle noch in Versionsverzeichnisse geschrieben werden.