Signieren mit KeyLocker cloud HSM
In diesem Artikel erfahren Sie, wie Sie mit der Cloud und KeyLocker HSM signieren können. Das Tutorial ist für alle Plattformen und verschiedene Signierwerkzeuge relevant - von signtool bis jarsigner. Die bereitgestellten Informationen sind auch die Grundlage für das Signieren mit dem Software Trust Manager von DigiCert ONE; das Signierprinzip gilt für beide Dienste.
KeyLocker- Kompatibilität
Bevor Sie KeyLocker ausprobieren, fragen Sie sich vielleicht, ob Sie es in Ihrem Arbeitsablauf verwenden können und ob es für Sie funktionieren wird. KeyLocker und die zugehörigen Bibliotheken unterstützen (wie auch Software Trust Managet in DC1) Signierwerkzeuge von Drittanbietern. Eine vollständige Liste der Dateiformate, die Sie mit kompatiblen Tools unter Verwendung von KeyLocker signieren können, finden Sie in dem Artikel über die Integration von Signierwerkzeugen auf der DigiCert-Website: Signing tool integration.
Hier werde ich nur das am häufigsten verwendete Signtool in 32b und 64b Versionen erwähnen:
- SignTool (32-bit): .doc, .docm, .dot, .dotm, .msi, .cab, .exe, .dll, .mpp, .mpt, .pot, .potm, .ppa, .ppam, .pps, .ppsm, .ppt, .pptm, .pub, .vdw*, .vdx*, .vsd*, .vsdm, .vss*, .vssm, .vst*, .vstm, .vsx*, .vtx*, .wiz*, .xla, .xlam, .xls, .xlsb, .xlsm, .xlt, .xltm
- SignTool (64-bit): .appx, .appxbundle, .arx, .cab, .cat, .cbx, .cpl, .crx, .dbx, .deploy, .dll, .drx, .efi, .exe, .js, .msi, .msix, .msixbundle, .msm, .msp, .ocx, .psi, .psm1, .stl, .sys, .vbs, .vsix, .wsf, .xsn
Assistent im KeyLocker
Nachdem Sie sich bei KeyLocker angemeldet haben, wird ein Einrichtungsassistent angezeigt, der Sie bei der Erstellung der benötigten Authentifizierungsmittel unterstützt..
Achten Sie darauf, Ihre Authentifizierungsinformationen sorgfältig zu speichern, da Sie ohne sie nicht signieren können. Speichern Sie das Zertifikat für die Authentifizierung auf dem Computer, auf dem Sie signieren werden. Das Passwort für dieses Zertifikat (PFX) speichern Sie in einer Systemvariablen oder geben es im Assistenten ein.
Einrichten der Signaturumgebung
Vor dem Signieren müssen Sie Variablen und Authentifizierung in Ihrem System einrichten. Sie können dies manuell in den Systemeinstellungen tun oder den in Click-to-sign enthaltenen Assistenten von DigiCert verwenden (siehe letzter Absatz). Sie finden das Click-to-sign-Installationsprogramm im selben Ordner wie smctl, normalerweise unter C:/Program Files/DigiCert/DigiCert Keylocker Tools/.
Sie müssen die folgenden Daten in die Systemvariablen eingeben (manuell oder mit Hilfe des Assistenten):
- Host - URL für die Verbindung, typischerweise https://clientauth.one.digicert.com
- API key - Ihr API-Token von KeyLocker
- Client authentication certificate - Ihr Authentifizierungszertifikat und sein Passwort
- Client authentication certificate password - Passwort für das oben genannte Zertifikat
- Pkcs11 configuration file - optional für signtool; Konfigurationsdatei für die PKCS11-Bibliothek, die von smctl, jarsigner und anderen verwendet wird. Wie man sie erstellt, siehe hier
Wenn Sie nicht wissen, wie Sie Windows-Variablen manuell setzen können, sehen Sie sich dieses Video-Tutorial an Video-Tutorial.
Entweder zeigt Ihnen der Assistent (Credentials saved) die richtigen Einstellungen an, oder Sie können sie mit dem Dienstprogramm SMCTL mit dem Befehl überprüfen smctl healthcheck
Dieser Befehl prüft die Verbindung und die Authentifizierung gegenüber KeyLocker, prüft aber auch, ob mindestens ein Signierwerkzeug zugänglich ist. Wenn dies der Fall ist, wird das Tool als "Mapped: Yes" aufgelistet und der Pfad dazu auf dem Computer.
Wenn Sie signtool nicht im Testergebnis sehen (Signtool: Mapped: No), bedeutet dies, dass signtool entweder nicht installiert ist oder der Pfad dazu nicht in den Systemvariablen festgelegt ist (Einstellung siehe Set PATH environment variable). Hilfe zum Healthcheck-Tool finden Sie im Artikel in der DigiCert-Dokumentation Healthcheck commands in der DigiCert-Dokumentation.
Es wird empfohlen, die Variablen dauerhaft auf das System zu setzen, oder im Falle von Windows sicher im Windows Credential Manager (in den Systemvariablen sind für jeden zugänglich, der Zugriff auf den Computer hat). Wenn Sie Variablen nur in der Befehlszeile setzen, müssen Sie sie bei jeder Sitzung neu setzen. Siehe die Dokkumentatio zu Session-based environment variables.
Zertifikat-Synchronisierung
Nachdem Sie die Verbindung zu KeyLock hergestellt haben (vorheriger Abschnitt), müssen Sie die Zertifikate mit Ihrem System synchronisieren.
C:/Program Files/DigiCert/DigiCert Keylocker Tools>smctl windows certsync --keypair-alias=key_558469087
Syncing certificate for alias: key_558469087, ID: 2a47112c-4b5d-4ce0-8e70-d67437e58135 and SHA1 Fingerprint: ecb0f10ab1XXXXXXXXXX1681fb70a31e32288263
Sie können auch das Dienstprogramm smksp_cert_sync verwenden:
C:/>smksp_cert_sync
Syncing certificate for alias: key_558469087, ID: 2a47112c-4b5d-4ce0-8e70-d67437e58135
Jetzt wird der öffentliche Teil des Zertifikats lokal im Windows-Zertifikatspeicher gespeichert, aber der private Schlüssel bleibt im Cloud-Speicher.
Signieren von Dateien
Im Folgenden finden Sie Hilfe zum Signieren von Dateien mit verschiedenen Tools, die Ihnen beim Einstieg in die Nutzung von Code Signing-Zertifikaten erleichtern.
Die erwähnten Programme werden in der Befehlszeilenschnittstelle (CLI) verwendet, die Ausnahme ist das DigiCert® Click-to-sign-Dienstprogramm (siehe letzter Absatz)
Signieren von Dateien mit SMCTL (empfohlen)
Das Dienstprogramm SMCTL stammt von DigiCert und kann auch für die vereinfachte Dateisignierung mit Tools von Drittanbietern verwendet werden (Sie benötigen jedoch mindestens Signtool). SMCTL funktioniert mit den am häufigsten verwendeten Tools - Signtool, Apksigner, Jarsigner, Mage, Nuget. Sie finden das Tool im Ordner C:/Program Files/DigiCert/DigiCert Keylocker Tools/smctl.exe.
Sie können entweder den Schlüsselalias (empfohlen - Sie finden ihn in KeyLocker) oder den Zertifikatsfingerabdruck (SHA-1-Hash) verwenden, um das Zertifikat auszuwählen.
smctl sign --keypair-alias=key_558469087 -d=SHA256 --verbose --config-file "C:/Program Files/DigiCert/DigiCert Keylocker Tools/pkcs11properties.cfg" --input "C:/Users/User/HelloSign.exe"
smctl sign --fingerprint --input
Sie können die Gültigkeit der Signatur mit einem Befehl überprüfen
smctl sign verify --input
Die SMCTL-Dokumentation finden Sie auf der DigiCert-Website.
Signieren von Dateien mit Signtool
Das folgende Tutorial befasst sich mit dem Tool Signtool aus dem Windows SDK. Es ist das am häufigsten verwendete Signierwerkzeug auf der Windows-Plattform.
Dem Signtool-Befehl muss angegeben werden, welche Datei man signieren möchte, mit welchem Zertifikat signiert werden soll und alle damit verbundenen Parameter. Sie können sich auf verschiedene Arten auf das Signierzertifikat beziehen - Sie können Signtool automatisch ein Zertifikat auf der Grundlage der Speicherung auswählen lassen; Sie können entweder eine spezifische Zertifikatsauswahl treffen, indem Sie sich auf die Datei mit dem gespeicherten Zertifikat beziehen (natürlich nur auf den öffentlichen Teil ohne den privaten Schlüssel), oder Sie können den SHA-1-Hash des gegebenen Zertifikats verwenden.
Hier ein Beispiel für das Signieren mit einem Zertifikathash:
C:/>signtool.exe sign /sha1 ecb0f10ab1XXXXXXXXXX1681fb70a31e32288263 /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 C:/Users/User/Documents/HelloSign.exe
Und hier ist ein Beispiel für das Signieren mit KeyLocker und einer Zertifikatsdatei:
C:/Users/User>signtool.exe sign /csp "DigiCert Signing Manager KSP" /kc key_558469087 /f C:/Users/User/Documents/cert_558469087.crt /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 C:/Users/User/Documents/HelloSign.exe
Done Adding Additional Store
Successfully signed: C:/Users/User/Documents/HelloSign.exe
Sie können die Gültigkeit der Signatur mit dem Befehl überprüfen signtool verify /v file.exe
Sie können die Signatureigenschaften der signierten Datei auch über den Explorer und Eigenschaften (rechte Maustaste) finden.
Signieren von Dateien mit Jarsigner
Dank der PKCS11-Bibliothek können Sie Jarsigner zusammen mit KeyLocker verwenden; Sie können vereinfacht mit SMCTL oder direkt mit Jarsigner und der PKCS11-Bibliothek signieren.
Beispiel für das Signieren mit Jarsigner:
jarsigner -keystore NONE -storepass NONE -storetype PKCS11 -sigalg SHA256withRSA -providerClass sun.security.pkcs11.SunPKCS11 -providerArg pkcs11properties2.cfg -signedjar C:/Users/Name/Desktop/signed/signedjar.jar C:/Users/Name/Desktop/ToSign/jartosign.jar key3 -tsa "http://timestamp.digicert.com"
Sie können die Richtigkeit der Signatur mit dem Befehl überprüfen:
jarsigner -verify
Die Dokumentation für Jarsigner finden Sie auf der DigiCert-Website.
Signieren mit DigiCert® Click-to-sign
Dieses Dienstprogramm bietet eine grafische Oberfläche, um das Signieren von Dateien zu erleichtern. Das Ergebnis und das Prinzip des Signierens unterscheiden sich jedoch nicht von den Kommandozeilen-Tools; stattdessen erlauben sie detailliertere Einstellungen der Signaturparameter. DigiCert® Click-to-sign verfügt nur über vereinfachte Optionen, die jedoch für die meisten Benutzer ausreichend sein dürften.
DigiCert® Click-to-sign hat einen großen Vorteil - um es einzurichten, müssen Sie den KeyLocker-Assistenten für die Einrichtung der Zugangsdaten (secrets) durchlaufen. Der Assistent testet einfach Ihre Verbindung zur Cloud, aber noch wichtiger ist, dass er diese Variablen im System einrichtet! Sie müssen sie nicht manuell einstellen.
Das Signieren mit diesem Tool ist so einfach wie möglich: Klicken Sie mit der rechten Maustaste auf die zu signierende Datei und wählen Sie im Menü die Option Click to sign. Sie können dann sofort oder nach Bestätigung der Signatureinstellungen signieren.
Die Dokumentation für Click-to-sign finden Sie auf der DigiCert-Website.
Hinweis: Wenn Click-to-sign nicht funktioniert, setzen Sie die PATH-Variable auf die Pfade zu Click-to-sign selbst und zur Signieranwendung (signtool), getrennt durch Semikolon. Zum Beispiel:
Path: C:/Program Files/DigiCert/DigiCert Keylocker Tools;C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0x64;
Integration in CI/CD
Der Hauptvorteil von KeyLocker ist die Fähigkeit, Signaturen zu automatisieren, indem sie in den CI/CD-Workflow integriert werden. DigiCert hat eine Reihe von Skripten und Plugins für die am häufigsten verwendeten Entwicklungstools und Plattformen vorbereitet. Plugins sind für Azure DevOps, GitHub und Jenkins verfügbar. Es gibt noch mehr Integrationsskripte für die PKCS11-Bibliothek.
Vollständige Informationen finden Sie in dem Artikel CI/CD integrations.
Dokumentation und andere Ressourcen:
- Dokumentation zum SignTool, verfügbar auf https://learn.microsoft.com/de-de/dotnet/framework/tools/signtool-exe
- Dokumentation zum KeyLocker, verfügbar auf https://docs.digicert.com/en/digicert-keylocker.html