Fehlersuche für KeyLocker
KeyLocker ist ein mächtiges Werkzeug zum Code-Signieren, das es ermöglicht, Ihr Code-Signing-Zertifikat in der Cloud zu speichern und seinen Hash sicher aus der Ferne zu signieren. Die anfängliche Einrichtung hat jedoch einige Tücken, bei denen dieser Artikel hilft.
Inhaltsverzeichnis
- Variablenüberprüfung
- Überprüfung der richtigen Einrichtung
- MMC und Überprüfung der Zertifikatspräsenz
- Probleme beim Signieren
- Wo man Logdateien findet
- Weitere Ressourcen und Informationen
Variablenüberprüfung
Ein entscheidender Schritt für das Funktionieren von KeyLocker auf Ihrem System ist die richtige Einrichtung der Variablen. Diese bestimmen nicht nur den Pfad zu den Signierwerkzeugen, sondern enthalten auch Authentifizierungsdaten. Sie können diese entweder für eine Sitzung oder dauerhaft einrichten.
Variablen können auf verschiedene Weisen im System eingerichtet werden. Neben einer separaten Datei und Variablen können sie auch im Windows Credential Manager gespeichert werden. Wenn Sie über die GUI signieren möchten, können sie in dem Tool Click-to-sign eingestellt werden, das Sie in Ihrem KeyLocker-Konto finden (die Variablen würden jedoch nicht auf Systemebene funktionieren).
Die Einrichtung einer Variable in Windows ist einfach über die Befehlszeile möglich. Starten Sie cmd und geben Sie setx VARIABEL=WERT
Achtung - setx arbeitet mit Benutzer-, nicht mit Systemvariablen.
Für die korrekte Funktion von KeyLocker müssen Client-Authentifizierungsvariablen + der Standort der Signaturwerkzeuge und DigiCert-Bibliotheken eingerichtet werden.
Einrichtung der Authentifizierung
- SM_CLIENT_CERT_FILE - der Pfad zum Authentifizierungszertifikat mit der Endung p12, das Sie aus dem DigiCert ONE-Kompass heruntergeladen haben
- SM_HOST - die Host-Adresse von DigiCert ONE, das ist https://clientauth.one.digicert.com
Diese beiden Variablen sind nicht geheim, da das Zertifikat durch ein Passwort geschützt ist. Sie können ohne Bedenken im System eingerichtet werden. Die folgenden zwei Variablen sind geheim, und es wird empfohlen, sie nicht im System einzurichten, wenn darauf mehrere Benutzer Zugriff haben. Es ist besser, sie im Windows-Passwortmanager zu speichern. Weitere Informationen über die Variableneinrichtung für Windows finden Sie im Artikel Credential setup for Windows.
- SM_API_KEY - der API-Schlüssel, den Sie in der DigiCert ONE-Schnittstelle generiert haben
- SM_CLIENT_CERT_PASSWORD - das Passwort für das Authentifizierungszertifikat in P12, das einmalig im DC1-Assistenten angezeigt wurde
Einrichtung des Pfades für Signierwerkzeuge
Das Hinzufügen eines Wertes zur PATH-Variable erfolgt über den Befehl setx PATH "path;%PATH%"
Dieser Befehl fügt dem aktuellen Benutzerwert der PATH-Variable einen neuen Wert hinzu und speichert ihn dauerhaft. Für das korrekte Funktionieren von KeyLocker ist es erforderlich, mindestens zwei zu setzen:
- Der Pfad zum Windows SDK und signtool
- Der Pfad zu den DigiCert Keylocker Tools
Finden Sie den gültigen Pfad zum Windows SDK (der Pfad verwendet die von Ihnen installierte Versionsnummer). Darüber hinaus benötigen Sie die DigiCert Keylocker Tools, die Sie von DigiCert ONE heruntergeladen und installiert haben; sie befinden sich in C:\Program Files\DigiCert\DigiCert Keylocker Tools.
Wir fügen beide Variablen gleichzeitig über CMD hinzu, sonst wird eine die andere überschreiben: setx PATH "C:\Program Files\DigiCert\DigiCert Keylocker Tools\;C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\;%PATH%"
Systemvariablen können auch über das Windows-GUI gesetzt werden; über CMD ist es schneller, aber Werte werden bei mehrfachem Eintrag überschrieben. Es ist auch möglich, PowerShell zu verwenden.
Wie man die Variable PATH manuell in Windows anpasst
Um sicherzustellen, dass die Werte erhalten bleiben, können Sie PATH manuell anpassen:
- Öffnen Sie Systemsteuerung → System → Erweiterte Systemeinstellungen.
- Klicken Sie auf Umgebungsvariablen.
- Suchen Sie PATH (in Systemvariablen oder Benutzervariablen).
- Klicken Sie auf Bearbeiten, fügen Sie die individuellen Pfade hinzu und speichern Sie.

Wie man die Variable PATH mit PowerShell hinzufügt
Um den Pfad dauerhaft zur PATH-Variable mit PowerShell hinzuzufügen, gehen Sie wie folgt vor:
- Öffnen Sie PowerShell als Administrator (klicken Sie mit der rechten Maustaste auf Start → Windows PowerShell (Admin)).
- Zuerst ermitteln Sie den aktuellen Wert der "PATH"-Variable:
- Dann fügen Sie einen neuen Pfad zu den bestehenden Werten hinzu:
- Falls Sie einen weiteren Pfad hinzufügen müssen, wiederholen Sie den Vorgang:
- Nachdem Sie die Befehle ausgeführt haben, starten Sie die Eingabeaufforderung oder den Computer neu, damit die Änderungen wirksam werden.
[System.Environment]::GetEnvironmentVariable("Path", "User")
$path = [System.Environment]::GetEnvironmentVariable("Path", "User")
$newPath = $path + ";C:\Program Files\DigiCert\DigiCert Keylocker Tools\"
[System.Environment]::SetEnvironmentVariable("Path", $newPath, "User")
$newPath = $newPath + ";C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\"
[System.Environment]::SetEnvironmentVariable("Path", $newPath, "User")
Hinweis: Wenn Sie die systemweite "PATH"-Variable ändern möchten (gültig für alle Benutzer), ersetzen Sie "User" durch "Machine" im Befehl.
Überprüfung des Variablenwerts in cmd:
echo %VARIABEL%
Zum Beispiel "echo %PATH%". Dann zeigt cmd ihren Wert an.
Überprüfung der richtigen Einrichtung
Die KeyLocker-Tools enthalten das Dienstprogramm smctl, das zum Signieren verwendet werden kann, aber auch zur Basisdiagnose dient. Der folgende Befehl überprüft, ob alles auf der Station richtig eingerichtet ist und smctl sich mit der DigiCert-Cloud verbinden kann:
smctl healthcheck
Im Bericht sehen Sie die Bestätigung, ob Sie sich mit KeyLocker verbunden haben (die Authentifizierung funktioniert) und ob smctl die Anwesenheit der Signaturwerkzeuge wie signtool erkennt. Beispiel:
smctl healthcheck
--------- Account Settings ---------
Teams: Disabled
Threat detection: Enabled
Static Binary Analysis: Enabled
Software Composition Analysis: Disabled
--------- User credentials ---------
Status: Connected
Username: XXXX-keylocker
Accounts: XXXX-1699076
Authentication: 2FA
Environment: Prod
Credentials:
Host: https://clientauth.one.digicert.com
API key: 010897bf735bbc57d48270cd3d_50dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxe4 (Pulled from environment variable)
Client certificate file path: C:\Users\xy\Documents\keylocker\Certificate_pkcs12.p12
Client certificate password: ytf_xxxxxx0F (Pulled from environment variable)
API keys:
Name: xy (expires on Mon, 31 Dec 2029 23:59:59 UTC)
Client certificates:
Name: xy (expires on Mon, 31 Dec 2029 23:59:59 UTC)
Privileges:
Can sign: Yes
Can approve offline release: No
Can revoke certificate: Yes
Can scan: No
Permissions:
Account Manager:
MANAGE_AM_PERMISSION
MANAGE_AM_ROLE
MANAGE_AM_ACCOUNT_USER
VIEW_AM_ROLE
VIEW_AM_ACCOUNT
VIEW_AM_USER
VIEW_AM_ORGANIZATION
VIEW_AM_AUDIT_LOG
Keypairs:
SIGN_SM_HASH
VIEW_SM_KEYPAIR
MANAGE_SM_KEYPAIR
Certificates:
VIEW_SM_CERTIFICATE
REVOKE_SM_CERTIFICATE
Other permissions:
VIEW_SM_LICENSE
MANAGE_SM_CC_API_KEY
--------- Signing tools ---------
Signtool 32 bit:
Mapped: No
Signtool:
Mapped: Yes
Path: C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\signtool.exe
Mage:
Mapped: No
Nuget:
Mapped: No
Jarsigner:
Mapped: No
Apksigner:
Mapped: No
Wenn es ein Problem mit der Authentifizierung gibt, überprüfen Sie, ob Sie die richtigen Werte gesetzt haben, die Sie im KeyLocker-Assistenten im DigiCert ONE-Interface erhalten haben. Wenn Sie Zweifel haben, können Sie den Assistenten zurücksetzen und neue credentials erstellen.
Sie könnten auch darauf stoßen, dass smctl signtool oder andere Signierwerkzeuge nicht erkennt. Dies bedeutet, dass es notwendig ist, ihren Standort zur Benutzer- oder System-PATH-Variable hinzuzufügen. Siehe oben im Abschnitt über Variablen.
MMC und Überprüfung der Zertifikatspräsenz
Wenn Sie unter Windows arbeiten, schauen Sie in den Zertifikats-Manager, den Sie durch den Befehl certmgr.msc starten. Wenn die Synchronisation mit KeyLocker erfolgreich erfolgt, sehen Sie ein Zertifikat mit einem Privatenschlüssel-Flag im Certificate Store. Das bedeutet jedoch nicht, dass es dort tatsächlich mit dem Privatenschlüssel ist - das Zertifikat mit dem Privatenschlüssel ist weiterhin in der Cloud gespeichert.
Ist das Zertifikat nicht vorhanden, starten Sie die Synchronisation.
smctl windows certsync
Bei erfolgreicher Synchronisation sehen Sie eine Bestätigung:
Syncing certificate for alias: key_1236506290, ID: ac793b6d-cac4-4be4-b145-003d4d1d63db and SHA1 Fingerprint: 54d0c7a2d93ae4d5fccb41d97c51a8ab3581c72c
Probleme beim Signieren
Wenn Sie Probleme beim Signieren haben, versuchen Sie, von den einfachsten zu den komplexeren Ansätzen zu gehen. Der einfachste Weg ist das Signieren mit dem Dienstprogramm smctl von DigiCert, das als Overlay zu Signierwerkzeugen wie signtool oder jarsigner dienen kann. Das ist die am wenigsten konfliktreiche Methode und benötigt keine Parameter. Verwenden Sie zur Problembehebung keine Zeitstempel oder andere Optionen.
Das Signieren mit smctl erfolgt einfach: smctl sign --keypair-alias=key_1234567890 --input C:\Users\John.Doe\Desktop\file_to_sign.exe
Auf das Zertifikat kann über den Parameter "keypair-alias" oder "fingerprint" verwiesen werden; diese Informationen zum Zertifikat finden Sie beispielsweise mit dem Befehl smctl windows certsync.
Nach dem Signieren können Sie die Signatur überprüfen: smctl sign verify --input
Ein Hilfedokument zum Signieren finden Sie im Artikel Sign binaries with SMCTL.
Nach erfolgreicher Signatur mit smctl können Sie mit einem anderen Tool wie signtool signieren. Auch das sollte funktionieren. Lassen Sie die Auswahl der Zertifikate automatisch und fügen Sie nach und nach weitere Parameter hinzu.
Sobald es erfolgreich nach Ihren Vorstellungen funktioniert, können Sie das Signieren beispielsweise mit Visual Studio oder in einer anderen Entwicklungsumgebung ausprobieren.
Wo man Logdateien findet
Wenn alles Obige fehlschlägt und das Signieren nicht funktioniert, schauen Sie in die Protokolle von smctl und anderen DigiCert-Tools. Wenn Sie die Protokolle bei der Problemlösung mit unserem Support verwenden, beschleunigt dies sicherlich die Lösung des Problems.
Die Logdatei des Dienstprogramms smctl finden Sie in der Datei smctl.log, die im Ordner /.signingmanager/logs im jeweiligen Benutzerprofil gespeichert ist. Versuchen Sie, in cmd echo %USERPROFILE%/.signingmanager/logs
einzugeben, um den vollständigen Ordnerstandort zu sehen.
Weitere Ressourcen und Informationen
- Häufige Fehler - Troubleshoot Guide in der KeyLocker-Dokumentation.
- KeyLocker-Dokumentation auf der DigiCert-Website
Es tut uns leid, dass Sie hier für Ihren Bedarf nichts Passendes gefunden haben.
Helfen Sie uns, diesen Artikel zu verbessern. Schreiben Sie uns bitte, was Sie hier erwartet und nicht erfahren haben.