Codesigning - Signieren einer .jar Datei

Solution

 

Voraussetzungen

 In dieser Anleitung geht man davon aus, dass folgende Voraussetzungen schon gegeben sind: 

• USB Token mit einem Codesigning oder EV Codesigning Zertifikat 

• Das Java JDK installiert ist JDK
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 

• Das Administrator Rechte zur Verfügung stehen 

 

Konfiguration

Um Zugriff auf den USB-Token zu erhalten, müssen wir zuerst eine Datei erstellen, welche die PKCS11 Datei von Gemalto SafeNet Authentication Client enthält.

Öffnen Sie den Editor und kopieren Sie die unten aufgelistete 3 Zeilen rein.
Speichern Sie Datei unter dem Namen eToken.cfg und im Ordner wo sich Ihre Java JDK Înstallation befindet C:\Program Files\Java\jdk1.8.0_251\bin ab.

name=eToken
library=c:\WINDOWS\system32\eTPKCS11.dll
slot=0 

 

Öffnen Sie ein CMD Fenster mit Administratoren Rechten
Navigieren Sie zu Ihrem JAVA JDK Installationsordner C:\Program Files\Java\jdk1.8.0_251\bin

 

Damit wir den Token zum Signieren verwenden können, benötigen wir den Alias des Privaten Schlüssels. Dies ermöglicht es Ihnen auf das richtige Zertifikat auf dem USB-Token zuzugreifen.

 

keytool -list -keystore NONE -storetype PKCS11 -providerclass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg

Geben Sie das Passwort oder die PIN Ihres USB-Token ein.
Sie erhalten danach eine Auflistung der Alias aller Zertifikate, welche sich auf dem USB-Token befinden.

Falls Sie hier eine Fehlermeldung erhalten “java.security.KeyStoreException: PKCS11 not found” gibt es zwei potenzielle Möglichkeiten an was es liegen könnte: 

 

• Die Slot-Nummer ist nicht korrekt. Standardmässig wird er Slot “0” verwendet. Sie müssen dies austesten, indem Sie in unserer eToken.cfg die Zeile slot=0 anpassen

• Die Middleware des Gemalto/SafeNet USB-Token der SafeNet Authentication Client ist nicht oder nicht korrekt installiert. Stellen Sie sicher, dass Sie eine neuere Version installiert haben und auch die Treiber für den USB-Token vorhanden sind.

 

Falls Sie mehrere Zertifikate auf dem USB-Token verwenden, müssen Sie das Zertifikat, welches Sie zum Signieren verwenden wollen anhand des Fingerprints (Thumbprint) zuerst identifizieren. 

 

Öffnen Sie dazu den SafeNet Authentication Client und klicken Sie auf das Zahnrad-Symbol oben rechts.

 

Wählen Sie nun die Registerkarte “Details” und scrollen Sie ganz nach unten.
Klicken Sie auf Fingerprint oder Thumbprint und kopieren Sie den String.

 

 

Suchen Sie nun den Fingerprint in der Liste unten, welcher wir in einem oberen Schritt beschrieben haben.

Kopien Sie danach den Alias in unserem Beispiel ist dies “0EC985B86C282278,”

 

.Jar Datei signieren


Kopieren Sie Ihre .jar Datei in Ihren Java JDK Installationsordner. 
In unserem Fall wäre dies C:\Program Files\Java\jdk1.8.0_251\bin.

Benennen Sie dieses um zu test.jar oder Sie passen den Befehl dem Namen Ihrer Datei an.

 


Führen Sie folgenden Befehl aus:

jarsigner -keystore NONE -storetype PKCS11 -tsa http://tsa.quovadisglobal.com/TSS/HttpTspServer -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg test.jar "le-d0e453de-66db-414a-8fa8-0a07cfad66b5"

 

Verwendung eines Proxy

Optional mit Proxy-Angabe: 

jarsigner -keystore NONE -storetype PKCS11 -tsa http://tsa.quovadisglobal.com/TSS/HttpTspServer -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg test.jar "le-d0e453de-66db-414a-8fa8-0a07cfad66b5" -J - Dhttp.proxyHost=proxy -J-Dhttp.proxyPort=8080

 


Resultat: 

Resultat mit Proxy:

In unserer Anleitung wurde kein offizielles Codesigning Zertifikat verwendet, daher die Warnung im Screenshot.

Ihre .jar Datei sollte nun erfolgreich signiert worden sein.