Wie signiert man Java-Anwendungen und Applets

10.06.2016 | Petra Alm

Die Code Signing Zertifikate für digitale Signatur sind keine typischen SSL-Zertifikate. Ihre Anwendung ist aber für Sicherheit der Applikationen in PCs und Mobilgeräten von wesentlicher Bedeutung. Der Artikel beschreibt die Installation und Anwendung des Code Signing Zertifikats für Java. 

Java-Logo

Wozu dienen die Zertifikate zur digitalen Signatur?

Die Code Signing Zertifikate dienen zur IT-Sicherheit sowie die SSL-Zertifikate; sie werden aber nicht für den Schutz des Datenverkehrs zwischen Seitensebenutzern und Servern, sondern für die digitale Sginatur der Webanwendungen verwendet. Das Zertifikat funktioniert wie eine elektronische Signatur in einer Kommunikation per E-Mail.

Die Hauptgründe für die digitale Signatur sind klar, es sind

  1. Integrität des Programmcodes
  2. Identität des Software-Entwicklers

Wenn ein Benutzer auf nicht signierten Code stößt, wird je nach den Sicherheitseinstellungen des Browsers ein Warnhinweis angezeigt oder die Inhalte können nicht geladen werden. Wenn ein Benutzer auf signierten Code stößt, wird die verifizierte Identität des Herstellers in einer Pop-up-Meldung angezeigt. Der Benutzer kann entscheiden, ob er dem Code vertrauen möchte. Dank Code Signing Zertifikaten bietet Ihr Code Kunden die gleiche Sicherheit und Zuverlässigkeit wie originalverpackte Software aus dem Laden. Der Kunde kann sicher sein, dass die Software von keinem Menschen geändert wurde.

Was bringt das Code Signing Zertifikat für Java mit?

Das Code Signing Zertifikat für Java ermöglicht noch:

  • Signatur von .jar Dateien für Desktop Platformen
  • Verwendung vom Secure Hash Algorithm: SHA-1 und SHA 2
  • Kompatibilität mit Runtime Environment (JRE)
  • Identität des Software-Entwickler, Integrität des Programmcodes, die Anzahl der Fehlermeldungen kann gesenkt werden

Java wird als nicht vertrauenswürdig genug wahrgenommen. Die Platform enthält viele Schwachstellen, deswegen stellt die digitale Signatur der Applikationen oder Applets den wichtigen Punkt dar. 

Wie erwirbt man das Code Signing für Java?

Außer der Bestellung des Code Signing Zertifikats im SSLmarket.de braucht man eine Zertifikatsanforderung (CSR Request) und einen Private key.

Sie werden JDK (Java Development Kit) von Oracle fürs Signieren weiter brauchen. Zur Arbeit mit dem Zertifikat und zur Installation werden noch die Programme wie Keytool, Jar, und Jarsigner benötigt.

Keystore und Private key

Zu einem CSR (= öffentlicher Schlüssel) wird ein Private key automatisch erstellt, Sie können das mithilfe des Befehls tun:

keytool -genkey -keyalg rsa -keystore -alias -keysize 3072

Keystore wird einen Namen, Alias und Passwort für Keystore verlangen. Es wird auch nach einem Namen der Organisation fragen.

Die zwei Schlüssel stehen im Keystore zur Verfügung und der Private key muss in jedem Fall in Ihrem PC (auf dem Server) bleiben.

Danach wird der CSR Request erstellt. Sie werden nach mehreren Angaben nachgefragt.

keytool -certreq -file certreq.csr -keystore -alias

Der CSR Request wird im Detail der Bestellung im Kundenprofil bei SSLmarket.de hochgeladen.

Wie signiert man mit dem Code Signing?

Import des Zertifikats in den Keystore

Die Zertifizierungsstelle stellt das Zertifikat nach der Validierung der Organisation aus und Sie erhalten es per E-Mail. Danach ist es nötig, das Code Signing Zertifikat in den Keystore mithilfe des Befehls importieren:

keytool -import -trustcacerts -keystore -alias -file zert.p7b

Es ist wichtig, dass die P7B Datei nicht das von uns als .p7b gelieferte Zwischenzertifikat ist, definitiv ist es kein korrektes Code Signing Zertifikat, es handelt sich um das Intermediate-Zertifikat, primär für Windows. Es ist nötig, das Base64-Format des Code Signing Zertifikats als PKCS#7, also als P7B speichern (das Zertifikat wird mit dem Intermediate-Zertifikat in einer Datei zusammen sein). Dabei kann der Artikel Praktische Tipps für Arbeit mit OpenSSL - Export, Import, Transfer der Formate helfen.

Signatur der Anwendungen und Applets

Für die digitale Signatur einer Jar Datei kann man die jarsigner Applikation verwenden.

jarsigner -keystore

Fürs Timestamp benutzt man den Befehl:

jarsigner -tsa https://timestamp.geotrust.com/tsa -keystore

Bei der Signatur werdet ihr zur Eingabe eines Kennwortes im Keystore auffgefordert, welche Sie bei der Erstellung des Private keys angegeben haben.

Prüfung der Signatur

Ihr werdet die digitale Signatur sicher überpüfen, das könnt ihr mithilfe des Befehls tun:

jarsigner -verify -verbose -certs C:TestApplet.jar

Falls alles in Ordnung ist, könnt ihr die Anwendung für Ihre Kunden veröffentlichen. Wenn sie die Anwendung downloadet haben, Java Runtime Environment wird Ihre ID der Signatur darstellen.

Mehrere Informationen 

Der Artikel dient zur schnellen Orientierung. Wir empfehlen mehr Informationen über Oracle unter The Java Tutorials noch gewinnen.


Petra Alm
Spezialistin für TLS-Zertifikate
DigiCert TLS/SSL Professional
e-mail: info(at)sslmarket.de