Zum Hauptinhalt springen

Windows Provider

sslTrus bietet zwei Windows-Provider-Integrationsmöglichkeiten: KSP (Key Storage Provider) und CSP (Cryptographic Service Provider).

Über Windows Provider können Microsoft SignTool, Visual Studio, MSBuild, Paketierungstools und andere Software, die Windows-Kryptografieschnittstellen unterstützen, die Cloud-Codesignierungsfunktionen von sslTrus nutzen.

Der private Signaturschlüssel bleibt stets im Cloud-HSM gespeichert; die Schlüsseldatei muss nicht auf dem lokalen Computer bereitgestellt werden.

Installation, Konfiguration und Wartung von KSP und CSP erfolgen vollständig über die sslTrus SignTool CLI, die auf der sslTrus-Client-Veröffentlichungsseite heruntergeladen werden kann.

KSP und CSP

KSP und CSP entsprechen zwei Generationen von Windows-Kryptografieschnittstellen:

ProviderWindows-SchnittstelleGeeignete Szenarien
KSPCNG (Cryptography API: Next Generation)Moderne Windows-Anwendungen und Signaturtools; bevorzugte Wahl
CSPCryptoAPILegacy-Anwendungen oder Software, die ausdrücklich CSP erfordert

Für neue Windows-Integrationsszenarien wird in der Regel KSP bevorzugt.

Nur wenn die Zielsoftware KSP nicht unterstützt oder ausdrücklich einen herkömmlichen CryptoAPI-Provider erfordert, wird CSP verwendet.

KSP

KSP ist ein Key Storage Provider auf Basis von Windows CNG.

Nach der Installation von sslTrus KSP können CNG-fähige Windows-Anwendungen den Remote-Codesignierungsdienst über die standardmäßigen Windows-Schlüsselschnittstellen aufrufen.

Der lokale Provider empfängt die von der Anwendung ausgelösten Signaturanforderungen und sendet den zu signierenden Digest an den Remote-Codesignierungsdienst; die eigentlichen Operationen mit dem privaten Schlüssel erfolgen im Cloud-HSM.

Geeignete Szenarien

KSP eignet sich für:

  • Microsoft SignTool.
  • Visual Studio.
  • MSBuild.
  • Build- und Signatursoftware mit Unterstützung für Windows CNG.
  • Anwendungen, die über einen standardmäßigen Windows Provider auf entfernte private Schlüssel zugreifen müssen.

KSP installieren

Führen Sie in einem Administratoren-Terminal Folgendes aus:

signtool ksp install

Dieser Befehl installiert und registriert:

sslTrus Key Storage Provider

Die KSP-Installation umfasst die Registrierung des System-Providers sowie das Windows-Systemverzeichnis und erfordert daher in der Regel Administratorrechte.

Zertifikatskonfiguration hinzufügen

Ausführen:

signtool ksp add

Gemäß der Eingabeaufforderung:

Access Key
Access Secret
Certificate Code

Der Client ruft das entsprechende Zertifikat vom Remote-Codesignaturdienst ab und speichert die Remote-Dienst-URL, die Zugangsdaten und die Zertifikatskonfiguration.

Wenn Sie die NICSRS-Umgebung (www.nicsrs.com) verwenden, müssen Sie --address nicsrs hinzufügen:

signtool ksp add --address nicsrs

Zertifikat registrieren

Nach Abschluss der KSP-Konfiguration muss das Code-Signaturzertifikat im Windows-Zertifikatsbestand registriert und mit dem KSP-Provider verknüpft werden.

Ausführen:

signtool ksp register

Standardmäßig wird die Registrierung im persönlichen Zertifikatsbestand des aktuellen Benutzers vorgenommen.

Wenn eine Registrierung im LocalMachine-Zertifikatsbestand erforderlich ist:

signtool ksp register --store local-machine

Nach Abschluss der Registrierung erkennt Windows das entsprechende Zertifikat als mit verfügbarem privatem Schlüssel, der tatsächliche private Schlüssel bleibt jedoch weiterhin im Cloud-HSM gespeichert.

Verwenden von Microsoft SignTool

Nach Abschluss der KSP-Konfiguration können Sie das im Windows SDK enthaltene Microsoft signtool.exe zum Signieren von Dateien verwenden.

Beispiel:

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 ^
".\app.exe"

Hauptparameter:

ParameterBeschreibung
/cspGibt den sslTrus KSP Provider an
/kcGibt den Schlüsselcontainer der Zertifikatsnummer an
/fGibt das Codesignatur-Zertifikat an
/fdGibt den Datei-Hashalgorithmus an
/trGibt den RFC 3161 Zeitstempelserver an
/tdGibt den Zeitstempel-Hashalgorithmus an

Wenn eine SHA-1-Signatur zusätzlich zur bestehenden Signatur erforderlich ist, kann der Parameter /as verwendet werden:

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 ^
".\app.exe"

Microsoft signtool.exe ruft über Windows CNG den sslTrus KSP auf, und der KSP führt anschließend die Remotesignatur des privaten Schlüssels durch.

KSP verwalten

Anzeigen der bereits konfigurierten KSPs:

signtool ksp list

Konfiguration löschen:

signtool ksp del

Zertifikat von KSP trennen:

signtool ksp deregister

KSP deinstallieren:

signtool ksp uninstall

Vor der Deinstallation des Providers sollte bestätigt werden, dass keine andere Windows-Anwendung mehr von diesem Provider abhängig ist.

CSP

CSP ist der Cryptographic Service Provider, der von der herkömmlichen Windows CryptoAPI verwendet wird.

Er wird hauptsächlich für Windows-Signaturprozesse benötigt, bei denen der Provider und der Schlüsselcontainer über die Parameter /csp und /kc angegeben werden müssen. Der sslTrus CSP wird vom Client installiert und gewartet; die eigentliche Dateisignatur erfolgt weiterhin durch das Microsoft signtool.exe des Windows SDK.

Geeignete Szenarien

CSP eignet sich für:

  • Windows-Software, die nur die herkömmliche CryptoAPI unterstützt.
  • Signaturwerkzeuge, die ausdrücklich die Angabe eines CSP-Providers erfordern.
  • Umgebungen, in denen die Signatur über die Microsoft SignTool-Parameter /csp und /kc ausgeführt werden muss.
  • Ältere Anwendungen, die Windows CNG / KSP nicht verwenden können.

Auf neueren Systemen, die KSP normal verwenden können, ist die zusätzliche Verwendung von CSP in der Regel nicht erforderlich.

CSP installieren

Führen Sie im Administrator-Terminal Folgendes aus:

signtool csp install

Während der Installation werden registriert:

sslTrus Cryptographic Service Provider

Und installieren Sie die Provider-DLL in das Windows-System.

Der CSP-Provider-Typ ist:

PROV_RSA_AES

Die lokale Konfiguration wird standardmäßig gespeichert unter:

%ProgramData%\sslTrusKSP

Die Konfigurationsdatei wird durch Windows DPAPI geschützt.

Wenn der KSP gleichzeitig installiert werden muss, können Sie Folgendes ausführen:

signtool csp install --with-ksp

Zertifikatskonfiguration hinzufügen

Ausführen:

signtool csp add

Gemäß der Eingabeaufforderung:

Access Key
Access Secret
Certificate Code

Nach dem Hinzufügen lädt der Client das entsprechende Zertifikat herunter und speichert es unter:

%ProgramData%\sslTrusKSP\CERT_CODE.crt

Dabei dient CERT_CODE sowohl als Remote-Zertifikatskennung als auch als Schlüsselcontainer-Name, der später von Microsoft SignTool verwendet wird.

Bei Verwendung der NICSRS-Umgebung (www.nicsrs.com) muss --address nicsrs hinzugefügt werden:

signtool csp add --address nicsrs

Zertifikat registrieren

Standardmäßig wird das Zertifikat im persönlichen Zertifikatsbestand des aktuellen Benutzers registriert:

signtool csp register

Falls eine Registrierung bei LocalMachine erforderlich ist:

signtool csp register --store local-machine

Unterstützte Zertifikatsbestände umfassen:

ParameterWindows-Zertifikatsbestand
current-userCurrentUser\My
local-machineLocalMachine\My

Nach Abschluss der Registrierung zeigt der Windows-Zertifikat-Manager an, dass das entsprechende Zertifikat über eine verknüpfte private Schlüsselbeziehung verfügt. Der private Schlüssel befindet sich jedoch weiterhin tatsächlich im Cloud-HSM.

Verwendung von Microsoft SignTool

Bei der CSP-Signatur müssen der Provider, der Schlüsselcontainer und die Zertifikatsdatei explizit angegeben werden:

signtool.exe sign /v ^
/csp "sslTrus Cryptographic Service Provider" ^
/kc CERT_CODE ^
/f "C:\ProgramData\sslTrusKSP\CERT_CODE.crt" ^
/fd SHA256 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
".\app.exe"

Wichtigste Parameter:

ParameterBeschreibung
/cspGibt den sslTrus CSP-Provider an
/kcGibt den Schlüsselcontainer zur Zertifikatsnummer an
/fGibt das Code-Signaturzertifikat an
/fdGibt den Datei-Digest-Algorithmus an
/trGibt den RFC-3161-Zeitstempelserver an
/tdGibt den Zeitstempel-Digest-Algorithmus an

Der sslTrus CSP unterstützt die Digest-Algorithmen SHA1, SHA256, SHA384 und SHA512. Für neue Signaturszenarien sollte in der Regel SHA-256 oder ein stärkerer Algorithmus verwendet werden.

Signatur überprüfen

Nach Abschluss der Signatur kann die Überprüfung mit Microsoft SignTool erfolgen:

signtool.exe verify /pa /v ".\app.exe"

Die Signaturprüfung ruft den entfernten privaten Schlüssel nicht erneut auf und erzeugt auch keine neuen Signaturvorgänge.

CSP verwalten

Vorhandene Konfigurationen anzeigen:

signtool csp list

Löschen einer Zertifikatskonfiguration:

signtool csp del

Private Key-Verknüpfung des Zertifikats mit dem CSP aufheben:

signtool csp deregister

Deinstallation des Providers:

signtool csp uninstall

Das Löschen der CSP-Konfiguration entfernt bereits heruntergeladene Zertifikatsdateien nicht automatisch. Wenn das zugehörige Zertifikat und die Konfiguration nicht mehr verwendet werden, sollten sie erst bereinigt werden, nachdem bestätigt wurde, dass keine anderen Provider davon abhängig sind.

KSP oder CSP

Wenn keine besonderen Kompatibilitätsanforderungen bestehen, kann die Auswahl wie folgt getroffen werden:

SzenarioEmpfehlung
Neue Windows-SignaturumgebungKSP
Unterstützung von Windows CNGKSP
Moderne Windows-Tools wie Microsoft SignToolKSP
Software erfordert ausdrücklich CSPCSP
Legacy-CryptoAPI-AnwendungenCSP
Tool erfordert die Verwendung von /csp und /kcCSP

Der Hauptunterschied zwischen KSP und CSP liegt in der von Windows verwendeten Kryptografie-Provider-Schnittstelle; das Sicherheitsmodell für den entfernten privaten Schlüssel bleibt identisch.

Unabhängig davon, ob KSP oder CSP verwendet wird, wird der private Schlüssel für die Codesignatur nicht auf dem lokalen Client gespeichert.

Anzahl der Signaturen

Die Anzahl der Signaturen des Windows-Providers wird anhand der tatsächlich auf der zugrunde liegenden Ebene ausgeführten entfernten Signaturaktionen berechnet.

Beispiel:

SHA256 签名一次 = 1 次

Wenn dieselbe Datei zuerst mit SHA256 signiert und anschließend eine weitere Signatur angehängt wird, wird der Remote-Private-Key-Vorgang erneut ausgelöst, daher müssen die Berechnungen separat erfolgen.

Im KSP-Szenario führt die Doppelsignatur derselben Datei mit SHA256 und SHA1 in der Regel zu zwei zugrunde liegenden Signaturaufrufen.

Die spezifischen Regeln finden Sie in den Referenzmaterialien.

Zeitstempel

Bei Windows-Authenticode-Signaturen wird in der Regel empfohlen, einen vertrauenswürdigen Zeitstempel hinzuzufügen.

In modernen Codesignatur-Szenarien wird empfohlen, bevorzugt RFC-3161-Zeitstempel zu verwenden, zum Beispiel:

http://timestamp.acs.microsoft.com

In der tatsächlichen Produktionsumgebung sollte je nach Windows-Zielversion, Zertifikatsrichtlinie, Netzwerkumgebung und den Anforderungen des Zeitstempel-Dienstanbieters eine geeignete TSA gewählt werden.

Konkrete Angaben zu Zeitstempelservern und -protokollen finden Sie in den Referenzmaterialien.

Sicherheitshinweise

Bei Verwendung des Windows Providers ist Folgendes zu beachten:

  • Access Secret sollte als vertrauliche Zugangsdaten geschützt werden.
  • Schreiben Sie Zugangsdaten nicht in öffentliche Skripte oder Protokolle.
  • Provider-Konfigurationsdateien sollten nicht öffentlich verbreitet werden.
  • Lokale Zertifikatsdateien enthalten keinen privaten Schlüssel für die Codesignatur.
  • Der private Schlüssel für die Codesignatur wird stets in der Cloud-HSM aufbewahrt.
  • KSP/CSP benötigen beim Initiieren der Signatur Zugriff auf den Remote-Codesignaturdienst.
  • Bei Verwendung des LocalMachine-Zertifikatsbestands ist besonders auf Windows-Benutzerrechte und den Zugriffsbereich der Zugangsdaten zu achten.

Die config.dat des CSP wird mit DPAPI des aktuellen Windows-Benutzerprofils geschützt. Die Registrierung des Zertifikats bei LocalMachine ändert den DPAPI-Schutzbereich dieser Konfiguration nicht automatisch.