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:
| Provider | Windows-Schnittstelle | Anwendungsbereich |
|---|---|---|
| KSP | CNG (Cryptography API: Next Generation) | Moderne Windows-Anwendungen und Signiertools, bevorzugt |
| CSP | CryptoAPI | Legacy-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:
| Parameter | Beschreibung |
|---|---|
/csp | Gibt den sslTrus KSP-Provider an |
/kc | Gibt den Schlüsselcontainer für die Zertifikatsnummer an |
/f | Gibt das Code-Signatur-Zertifikat an |
/fd | Gibt den Datei-Hash-Algorithmus an |
/tr | Gibt den RFC-3161-Zeitstempelserver an |
/td | Gibt 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
/cspund/kcvon 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:
| Parameter | Windows-Zertifikatsspeicher |
|---|---|
current-user | CurrentUser\My |
local-machine | LocalMachine\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"
主要参数:
| 参数 | 说明 |
|---|---|
/csp | Gibt den sslTrus CSP Provider an |
/kc | Gibt den Schlüsselcontainer an, der der Zertifikatsnummer entspricht |
/f | Gibt das Code-Signaturzertifikat an |
/fd | Gibt den Datei-Hash-Algorithmus an |
/tr | Gibt den RFC 3161-Zeitstempelserver an |
/td | Gibt 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:
| Szenario | Empfehlung |
|---|---|
| Neue Windows-Signaturumgebung | KSP |
| Unterstützt Windows CNG | KSP |
| Moderne Windows-Tools wie Microsoft SignTool | KSP |
| Software verlangt ausdrücklich CSP | CSP |
| Traditionelle CryptoAPI-Anwendungen | CSP |
Tools erfordern die Verwendung von /csp und /kc | CSP |
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.