Microsoft Authenticode Code Signieren unter Linux mit Jsign

Jsign ist ein plattformunabhängiges Open-Source-Java-Tool für die Microsoft Authenticode-Codesignatur. Jsign lässt sich leicht in Build-Systeme wie Maven, Gradle und Ant integrieren oder direkt über die Befehlszeile verwenden.

In dieser Anleitung werden wir uns mit der Verwendung befassen Jsign von der Linux-Kommandozeile für OV / IV-Codesignatur und EV-Codesignatur. Da Jsign Java-basiert ist, können Sie es auch auf Windows- und MacOS-Systemen verwenden.

Installieren Sie Jsign

Zuerst müssen Sie Jsign herunterladen und installieren. Das Jsign Website Enthält Links zu Debian- und RPM-Paketen für die einfache Installation auf den meisten gängigen Linux-Systemen sowie a .jar Datei.

OV / IV-Codesignatur

Dieser Abschnitt gilt nur für Code Signing-Zertifikate mit individueller Validierung (IV) und Organisationsvalidierung (OV), die vor dem 1. Juni 2023 bestellt wurden. Ab dem 1. Juni 2023Die IV- und OV-Codesignaturzertifikate von SSL.com werden nun entweder auf USB-Tokens gemäß Federal Information Processing Standard 140-2 (FIPS 140-2) oder über unseren Cloud-Codesignaturdienst eSigner ausgestellt. 

Für die OV/IV-Codesignierung können Sie ein Zertifikat verwenden, das in einem Java-Keystore oder einer PKCS#12-Datei (PFX) gespeichert ist. Ersetzen Sie in allen folgenden Codebeispielen die in GROSSBUCHSTABEN angezeigten Werte durch Ihre tatsächlichen Werte.

  1. Verwenden Sie zuerst die keytool Befehl, um die zu bekommen alias Wert, der beim Signieren verwendet werden soll:
    keytool -list -v -keystore PKCS12-FILE.p12 -storetype PKCS12 -storepass PKCS12-PASSWORD
  2. Überprüfen Sie die Ausgabe Ihres keytool Befehl für eine Zeile beginnend mit Alias name:.
    Keystore-Typ: PKCS12 Keystore-Anbieter: SUN Ihr Keystore enthält 1 Eintrag Aliasname: 1 Erstellungsdatum: 18. Januar 2021 Eintragstyp: PrivateKeyEntry Zertifikatskettenlänge: 4 ...

    Im obigen Beispiel ist Alias name is 1.

  3. Verwenden Sie einen Befehl wie den folgenden, um eine Datei zu signieren und mit einem Zeitstempel zu versehen:
    • jsign Befehl systemweit installiert:
      jsign --keystore KEYSTORE.p12 --alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO-SIGN
    • Mit Jsigner .jar Datei:
      java -jar jsign-3.1.jar --keystore KEYSTORE.p12 --alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO- ZEICHEN
  4. Wenn Ihr Befehl erfolgreich ist, sollten Sie die folgende Ausgabe sehen:
    Hinzufügen einer Authenticode-Signatur zu example.exe
Hinweis: Standardmäßig unterstützt SSL.com Zeitstempel von ECDSA-Schlüsseln.

Wenn Sie auf diesen Fehler stoßen: The timestamp certificate does not meet a minimum public key length requirement, sollten Sie sich an Ihren Softwareanbieter wenden, um Zeitstempel von ECDSA-Schlüsseln zuzulassen.

Wenn Ihr Softwareanbieter die Verwendung des normalen Endpunkts nicht zulassen kann, können Sie diesen Legacy-Endpunkt verwenden http://ts.ssl.com/legacy um einen Zeitstempel von einer RSA-Zeitstempeleinheit zu erhalten.

EV-Code-Signierung

Sie können Jsign auch mit einem EV-Codesignaturzertifikat verwenden. Das Beispiel hier verwendet eine SSL.com EV-Codesignaturzertifikat installiert auf einem FIPS 140-2-validierter Sicherheitsschlüssel-USB-Token.

  1. Stellen Sie zunächst sicher, dass OpenSC ist auf Ihrem System installiert, damit es über die PKCS # 11-API mit Ihrem Token kommunizieren kann. Auf Debian-basierten Distributionen wie Ubuntu können Sie OpenSC mit installieren apt:
    sudo apt install opensc
  2. Erstellen Sie als Nächstes eine Konfigurationsdatei. Der Name der Datei ist beliebig, aber für die folgenden Beispielbefehle verwenden wir eToken.cfg. Beachten Sie, dass der Pfad zu opensc-pkcs11.so kann in Ihrer OpenSC-Installation variieren. Überprüfen Sie dies, bevor Sie die Konfigurationsdatei erstellen.
    name = OpenSC-PKCS11 description = SunPKCS11 über OpenSC library = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
  3. Verwenden Sie das keytool Befehl, um die zu bekommen alias Wert, der beim Signieren verwendet werden soll:
    keytool -list -v -keystore NONE -storetype PKCS11 -storepass TOKEN-PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
  4. Überprüfen Sie die Ausgabe Ihres keytool Befehl für eine Zeile beginnend mit Alias name:. Wenn Ihr Token mehrere Zertifikate enthält, überprüfen Sie die Gültigkeitsdaten und den Aussteller in der Ausgabe anhand Ihres Zertifikats. Beachten Sie, dass auf YubiKey von SSL.com ausgestellte EV-Codesignaturzertifikate den Aliasnamen haben sollten Certificate for PIV Authentication.
    Aliasname: Zertifikat für PIV-Authentifizierung Eintragstyp: PrivateKeyEntry Zertifikatskettenlänge: 1 Zertifikat [1]: Eigentümer: OID.1.3.6.1.4.1.311.60.2.1.3 = US, OID.1.3.6.1.4.1.311.60.2.1.2 .2.5.4.15 = Nevada, OID.20081614243 = Private Organisation, CN = SSL Corp., SERIALNUMBER = NV2, O = SSL Corp., L = Houston, ST = TX, C = US-Emittent: CN = SSL.com EV Code Signing Intermediate CA RSA R7299, O = SSL Corp, L = Houston, ST = Texas, C = US Seriennummer: 93f57a3bac6570c781580f63172e17 Gültig von: Fr 12 Apr 46:04:2020 EDT 17 bis: Sa 12 Apr 46:04:2021 EDT XNUMX
  5. Verwenden Sie einen Befehl wie den folgenden, um eine Datei zu signieren und mit einem Zeitstempel zu versehen:
    • jsign Befehl systemweit installiert:
      jsign --keystore eToken.cfg --alias "Zertifikat für PIV-Authentifizierung" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO-SIGN
    • Mit Jsigner .jar Datei:
      java -jar jsign-3.1.jar --keystore eToken.cfg --alias "Zertifikat für PIV-Authentifizierung" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE -UNTERSCHREIBEN
  6. Wenn Ihr Befehl erfolgreich ist, sollten Sie die folgende Ausgabe sehen:
    Hinzufügen einer Authenticode-Signatur zu example.exe
Hinweis: Standardmäßig unterstützt SSL.com Zeitstempel von ECDSA-Schlüsseln.

Wenn Sie auf diesen Fehler stoßen: The timestamp certificate does not meet a minimum public key length requirement, sollten Sie sich an Ihren Softwareanbieter wenden, um Zeitstempel von ECDSA-Schlüsseln zuzulassen.

Wenn Ihr Softwareanbieter die Verwendung des normalen Endpunkts nicht zulassen kann, können Sie diesen Legacy-Endpunkt verwenden http://ts.ssl.com/legacy um einen Zeitstempel von einer RSA-Zeitstempeleinheit zu erhalten.

Überprüfen Sie die digitale Signatur

  1. Sie können überprüfen, ob Ihre digitale Signatur gültig ist, indem Sie die Signaturdetails in Windows anzeigen.
    Digitale Signatur ist in Ordnung
  2. Sie können auch SignTool in Windows, um die digitale Signatur zu überprüfen.
    signtool.exe verify / pa 'C: \ Benutzer \ Aaron Russell \ Desktop \ example.exe' Datei: C: \ Benutzer \ Aaron Russell \ Desktop \ example.exe Indexalgorithmus Zeitstempel ============ ============================= 0 sha256 RFC3161 Erfolgreich überprüft: C: \ Users \ Aaron Russell \ Desktop \ example.exe

Abonnieren Sie den Newsletter von SSL.com

Verpassen Sie keine neuen Artikel und Updates von SSL.com

Bleiben Sie informiert und sicher

SSL.com ist ein weltweit führendes Unternehmen im Bereich Cybersicherheit, PKI und digitale Zertifikate. Melden Sie sich an, um die neuesten Branchennachrichten, Tipps und Produktankündigungen von zu erhalten SSL.com.

Wir würden uns über Ihr Feedback freuen

Nehmen Sie an unserer Umfrage teil und teilen Sie uns Ihre Meinung zu Ihrem letzten Kauf mit.