Zum Hauptinhalt springen

Windows-Anbieter

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

Über den Windows-Provider können Microsoft SignTool, Visual Studio, MSBuild, Installationspaket-Tools sowie andere Software, die die Windows-Krypto-Schnittstellen unterstützt, die Cloud-Codesignierungsfunktion von sslTrus nutzen.

Der Signaturschlüssel wird immer im Cloud-HSM gespeichert; es ist nicht erforderlich, die Schlüsseldatei auf dem lokalen Computer bereitzustellen.

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

KSP und CSP​

KSP und CSP entsprechen den beiden Generationen der Windows-Krypto-Schnittstellen:

ProviderWindows-SchnittstelleAnwendungsbereich
KSPCNG (Cryptography API: Next Generation)Moderne Windows-Anwendungen und Signiertools, bevorzugt
CSPCryptoAPILegacy-Anwendungen oder Software, die ausdrücklich CSP verwendet

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

CSP sollte nur verwendet werden, wenn die Zielsoftware KSP nicht unterstützt oder ausdrücklich den traditionellen CryptoAPI-Provider verlangt.

KSP​

KSP ist ein Key Storage Provider basierend auf Windows CNG.

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

Der lokale Provider empfängt Signaturanfragen von Anwendungen und sendet die zu signierende Zusammenfassung an den Remote-Codesignierungsdienst; die tatsächlichen Schlüsseloperationen werden im Cloud-HSM durchgeführt.

Anwendungsbereich​

KSP ist geeignet für:

  • Microsoft SignTool.
  • Visual Studio.
  • MSBuild.
  • Build- und Signiersoftware, die Windows CNG unterstützt.
  • Anwendungen, die über den standardmäßigen Windows-Provider auf Remote-Schlüssel zugreifen müssen.

Installation von KSP​

Führen Sie in einem Administratoren-Terminal aus:

signtool ksp install

Dieser Befehl installiert und registriert:

sslTrus Key Storage Provider

KSP-Installation umfasst die Provider-Registrierung des Systems sowie die Windows-Systemverzeichnisse, daher sind in der Regel Administratorrechte erforderlich.

Zertifikatskonfiguration hinzufügen​

Führen Sie Folgendes aus:

signtool ksp add

Geben Sie den Hinweis entsprechend ein:

Access Key
Access Secret
Certificate Code

Der Client bezieht das entsprechende Zertifikat vom Remote-Codesignaturdienst und speichert die Remote-Dienstadresse, Zugangsdaten und Zertifikatskonfiguration.

Wenn die NICSRS-Umgebung (www.nicsrs.com) verwendet wird, muss --address nicsrs hinzugefügt werden:

signtool ksp add --address nicsrs

Zertifikat registrieren​

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

Führen Sie aus:

signtool ksp register

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

Falls eine Registrierung im LocalMachine-Zertifikatsbestand erforderlich ist:

signtool ksp register --store local-machine

Nach der Registrierung erkennt Windows das entsprechende Zertifikat als mit einem verfügbaren privaten Schlüssel, aber der tatsächliche private Schlüssel verbleibt weiterhin im Cloud-HSM.

Verwenden von Microsoft SignTool​

Nach der KSP-Konfiguration kann das von Windows SDK bereitgestellte Microsoft signtool.exe verwendet werden, um Dateien zu signieren.

Zum 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 für die Zertifikatsnummer an
/fGibt das Code-Signatur-Zertifikat an
/fdGibt den Datei-Hash-Algorithmus an
/trGibt den RFC-3161-Zeitstempelserver an
/tdGibt den Zeitstempel-Hash-Algorithmus an

Wenn Sie einer vorhandenen Signatur eine SHA-1-Signatur hinzufügen möchten, können Sie den Parameter /as verwenden:

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 das sslTrus KSP auf, das anschließend die Remote-Signierung mit dem privaten Schlüssel durchführt.

KSP verwalten​

Bereits konfigurierte KSPs anzeigen:

signtool ksp list

Löschung der Konfiguration:

signtool ksp del

Aufhebung der Verknüpfung des Zertifikats mit dem KSP:

signtool ksp deregister

Deinstallieren des KSP:

signtool ksp uninstall

Vor der Deinstallation des Providers sollte sichergestellt werden, dass keine anderen Windows-Anwendungen weiterhin von diesem Provider abhängig sind.

CSP​

CSP ist der Cryptographic Service Provider, der von der traditionellen Windows CryptoAPI verwendet wird.

Er wird hauptsächlich für Windows-Signaturprozesse benötigt, bei denen über die Parameter /csp und /kc der Provider und der Schlüsselcontainer 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.

Anwendungsszenarien​

CSP ist geeignet für:

  • Windows-Software, die nur die traditionelle CryptoAPI unterstützt.
  • Signaturwerkzeuge, die explizit die Angabe eines CSP-Providers erfordern.
  • Umgebungen, in denen Signaturen über die Parameter /csp und /kc von Microsoft SignTool ausgeführt werden müssen.
  • Ältere Anwendungen, die Windows CNG / KSP nicht verwenden können.

Für neue Systeme, die KSP ordnungsgemäß nutzen können, ist die zusätzliche Verwendung von CSP in der Regel nicht erforderlich.

Installation des CSP​

Führen Sie im Admin-Terminal aus:

signtool csp install

Während der Installation werden folgende registriert:

sslTrus Cryptographic Service Provider

并将 Provider-DLL 在 Windows-System installieren.

Der CSP-Provider-Typ ist:

PROV_RSA_AES

Lokale Konfiguration wird standardmäßig gespeichert unter:

%ProgramData%\sslTrusKSP

Die Konfigurationsdatei wird mit Windows DPAPI geschützt.

Falls KSP gleichzeitig installiert werden soll, kann Folgendes ausgeführt werden:

signtool csp install --with-ksp

Hinzufügen der Zertifikatskonfiguration​

Ausführen:

signtool csp add

Basierend auf den angezeigten Hinweisen eingeben:

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

其中 CERT_CODE dient gleichzeitig als Kennung für das Remote-Zertifikat und als Name des Schlüsselcontainers, der später von Microsoft SignTool verwendet wird.

Wenn die NICSRS-Umgebung (www.nicsrs.com) verwendet wird, muss --address nicsrs hinzugefügt werden:

signtool csp add --address nicsrs

注册证书​

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

signtool csp register

Wenn eine Registrierung in LocalMachine erforderlich ist:

signtool csp register --store local-machine

Unterstützte Zertifikatsspeicher umfassen:

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

Nach Abschluss der Registrierung zeigt der Windows-Zertifikatsmanager an, dass das entsprechende Zertifikat über eine zugeordnete private Schlüsselverknüpfung verfügt, der private Schlüssel bleibt jedoch tatsächlich im Cloud-HSM.

Verwenden von Microsoft SignTool​

Beim CSP-Signieren müssen der Anbieter, 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"

主要参数:

参数说明
/cspGibt den sslTrus CSP Provider an
/kcGibt den Schlüsselcontainer an, der der Zertifikatsnummer entspricht
/fGibt das Code-Signaturzertifikat an
/fdGibt den Datei-Hash-Algorithmus an
/trGibt den RFC 3161-Zeitstempelserver an
/tdGibt den Zeitstempel-Hash-Algorithmus an

Die aktuelle Remote-Signaturschnittstelle unterstützt die SHA1- und SHA256-Hash-Algorithmen. Bei neuen Signaturszenarien sollte bevorzugt SHA256 verwendet werden; SHA1 sollte nur für die Kompatibilität mit älteren Systemen eingesetzt werden.

Signatur überprüfen​

Nach Abschluss der Signatur kann die Überprüfung mit Microsoft SignTool durchgeführt werden:

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

Die Signaturprüfung ruft den entfernten privaten Schlüssel nicht erneut auf und erzeugt auch keine neue Signaturanzahl.

CSP verwalten​

Vorhandene Konfiguration anzeigen:

signtool csp list

Löschen einer Zertifikatskonfiguration:

signtool csp del

Aufhebung der Verknüpfung des Zertifikats mit dem privaten Schlüssel des CSP:

signtool csp deregister

Deinstallation des Providers:

signtool csp uninstall

Das Löschen der CSP-Konfiguration entfernt nicht automatisch bereits heruntergeladene Zertifikatsdateien. Wenn die zugehörigen Zertifikate und Konfigurationen nicht mehr verwendet werden, sollte eine Bereinigung erst erfolgen, nachdem bestätigt wurde, dass keine anderen Provider davon abhängig sind.

KSP oder CSP​

Falls keine speziellen Kompatibilitätsanforderungen bestehen, kann die Auswahl wie folgt getroffen werden:

SzenarioEmpfehlung
Neue Windows-SignaturumgebungKSP
Unterstützt Windows CNGKSP
Moderne Windows-Tools wie Microsoft SignToolKSP
Software verlangt ausdrücklich CSPCSP
Traditionelle CryptoAPI-AnwendungenCSP
Tools erfordern die Verwendung von /csp und /kcCSP

Der Hauptunterschied zwischen KSP und CSP liegt in der unterschiedlichen Krypto-Provider-Schnittstelle, die von Windows verwendet wird; 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 niemals auf dem lokalen Client gespeichert.

Signaturanzahl​

Die Signaturanzahl des Windows-Providers wird anhand der tatsächlich im Hintergrund durchgeführten Remote-Signaturvorgänge berechnet.

Zum Beispiel:

SHA256 签名一次 = 1 次

如果对同一个文件先完成 SHA256 签名,再追加另外一次签名,则会再次触发远程私钥操作,因此需要分别计算。

KSP 场景下,同一个文件执行 SHA256 和 SHA1 双签通常会产生两次底层签名调用。

具体规则请参阅 参考资料。

Zeitstempel​

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

In modernen Codesignatur-Szenarien wird empfohlen, den RFC-3161-Zeitstempel zu bevorzugen, zum Beispiel:

http://timestamp.acs.microsoft.com

In der tatsächlichen Produktionsumgebung sollte je nach Ziel-Windows-Version, Zertifikatsrichtlinie, Netzwerkumgebung und Anforderungen des Zeitstempeldienstanbieters die geeignete TSA ausgewählt werden.

Spezifische Zeitstempelserver- und Protokollbeschreibungen finden Sie in den Referenzmaterialien.

Sicherheitshinweise​

Bei der Verwendung des Windows-Providers ist Folgendes zu beachten:

  • Der Access Secret sollte als sensible Anmeldeinformation geschützt werden.
  • Schreiben Sie Zugangsanmeldeinformationen nicht in öffentliche Skripte oder Protokolle.
  • Die Provider-Konfigurationsdatei sollte nicht öffentlich verbreitet werden.
  • Die lokale Zertifikatsdatei enthält keinen Code-Signatur-Privatschlüssel.
  • Der Code-Signatur-Privatschlüssel wird immer in der Cloud-HSM aufbewahrt.
  • KSP/CSP benötigt bei der Initiierung der Signatur Zugriff auf den Remote-Code-Signaturdienst.
  • Bei Verwendung des LocalMachine-Zertifikatsbestands sollten besonders die Windows-Benutzerrechte und der Zugriffsbereich der Anmeldeinformationen berücksichtigt werden.

Der config.dat des CSP wird mit DPAPI des aktuellen Windows-Benutzerprofils geschützt. Das Registrieren eines Zertifikats in LocalMachine ändert den DPAPI-Schutzbereich dieser Konfiguration nicht automatisch.