Frequently Asked Questions

Other Languages: Dansk Ελληνικά English Español Suomi Français Italiano Bokmål Nederlands Polski Português - Brasil Português - Portugal Русский Svenska Türkçe Українська Chinese Taiwan Chinese

Java-Codesignierung: Zertifikatsignieranforderung Generieren

Print this Article
Last Updated: February 2, 2015 12:47 PM

Seit Januar 2014 benötigen alle Java-Apps, die in Webbrowsern ausgeführt werden, Codesignaturzertifikate. Nach dem Erwerb eines solchen Codesignaturzertifikats müssen Sie Ihren Java-Code signieren.

Für das Packen und Signieren von Java-Code sind verschiedene Tools erforderlich, darunter keytool, jar und jarsigner. Ab Version JDK 5.0 kann jarsigner Signaturen mit Zeitstempel generieren. Dadurch kann überprüft werden, ob die JAR-Datei innerhalb der Gültigkeit des Codesignaturzertifikats signiert wurde.

Methode 1 - Anfordern eines neuen Codesignaturzertifikats

  1. Laden Sie gegebenenfalls das JDK über den folgenden Link herunter:
    http://java.sun.com/javase/downloads/index.jsp
  2. Fordern Sie ein Codesignaturzertifikat von Starfield Technologies.
    • Erstellen Sie einen neuen Schlüsselspeicher. Im Schlüsselspeicher werden die Sicherheitszertifikate gespeichert. In diesem Beispiel wird ein benutzerdefinierter Schlüsselspeicher namens „codesignstore“ erstellt, der nur für das Codesignaturzertifikat und den mit ihm verknüpfen privaten Schlüssel verwendet wird.
      keytool -genkey -alias codesigncert -keypass -keyalg RSA -keysize 2048 -dname "CN=displayname,O=companyname,C=US,ST=state,L=city" -keystore codesignstore -storepass
    • Erstellen Sie eine Zertifikatsignieranforderung (CSR). Ein privater Schlüssel „codesignstore“ wird erstellt und im Schlüsselspeicher gespeichert. Im aktuellen Arbeitsverzeichnis wird eine CSR-Datei „mycsr.pem“ erstellt.
      keytool -certreq -v -alias codesigncert -file mycsr.pem -keystore codesignstore
    • Erwerben Sie ein Codesignaturzertifikat.
    • Klicken Sie in „Mein Konto“ auf den erworbenen Credit für das Codesignaturzertifikat. Dadurch werden Sie zur Webanwendung Starfield-Kontoverwaltung für Sicherheitszertifikatdienste geleitet. Die Methode für die Generierung der Zertifikatsignieranforderung (CSR) muss im Anforderungsformular auf „manuell“ eingestellt sein, damit das CSR-Feld sichtbar ist.
    • Reichen Sie die Zertifikatsignieranforderung als Teil Ihrer Codesignaturanforderung ein.
      • Öffnen Sie die Datei „mycsr.pem“ in einem Editor und kopieren Sie den gesamten Inhalt der Datei (einschließlich der Zeilen, die „BEGIN NEW CERTIFICATE REQUEST“ und „END NEW CERTIFICATE REQUEST“ enthalten) in den entsprechenden Abschnitt des Formulars für die Codesignaturanforderung.
    • Die Angaben, die Sie zu Ihrem Unternehmen gemacht haben, werden geprüft. Die Registrierungsstelle setzt sich möglicherweise mit Ihnen in Verbindung, falls weitere Angaben notwendig sind.
    • Nach Ausstellung des Codesignaturzertifikats erhalten Sie eine E-Mail mit einem Link, über den Sie die Zertifikatdatei und alle damit zusammenhängenden Zwischenzertifikate herunterladen können.
  3. Installieren Sie das Codesignaturzertifikat in genau dem Schlüsselspeicher, den Sie zuvor erstellt haben. Im folgenden Beispiel wird davon ausgegangen, dass die Datei des Codesignaturzertifikats „mycert.cer“ heißt. Ebenso wird davon ausgegangen, dass die Zertifikatdatei sich im aktuellen Arbeitsordner befindet und das PKCS#7-Format aufweist.
    keytool -import -trustcacerts -keystore codesignstore -storepass -alias codesigncert -file mycert.cer
  4. Signieren Sie die JAR-Datei mithilfe von jarsigner. Verwenden Sie dabei das Codesignaturzertifikat und den privaten Schlüssel
    jarsigner -verbose -keystore codesignstore -storepass -keypass myapp.jar codesigncert
    • Dabei ist 'codesignstore' ein Alias für den Schlüsselspeicher, der das Codesignaturzertifikat, den privaten Schlüssel und alle anderen Zertifikate der Kette enthält.
    • Die unsignierte Eingabedatei heißt „myapp.jar“ und wird von der signierten Version der Datei überschrieben. Verwenden Sie die Befehlszeilenoption „-signedjar“, um getrennte Namen für die Eingabe- und Ausgabedatei anzugeben.
    • 'codesigncert' ist ein Alias für den privaten Schlüssel im Schlüsselspeicher.
    Im folgenden Beispiel werden dem oben aufgeführten Beispiel noch Optionen für Zeitstempel hinzugefügt.
    jarsigner -verbose -keystore codesignstore -storepass -keypass -tsa http://tsa.starfieldtech.com/ myapp.jar codesigncert
  5. Überprüfen und Bestätigen der signierten JAR-Datei
    jarsigner -verify -verbose -certs myapp.jar
  6. Den Code weitergeben

Methode 2 - Verwenden der bestehenden PKCS#12-Datei, die sowohl das Codesignaturzertifikat als auch den privaten Schlüssel enthält

  1. Laden Sie gegebenenfalls das JDK über den folgenden Link herunter:
    http://java.sun.com/javase/downloads/index.jsp
  2. Überprüfen Sie, dass die PFX/P12-Datei von jarsigner verwendet werden kann. Führen Sie den folgenden Befehl aus; der Aliasname in Schritt 5 wird im Kopfbereich der Ausgabe angezeigt:
    keytool -list -storetype pkcs12 -keystore mycert.pfx -v
  3. Generieren Sie mit dem jar-Tool aus den Java-Klassendateien eine JAR-Datei:
    jar cvf myapp.jar myapp.class
  4. Signieren Sie die JAR-Datei mit jarsigner, indem Sie das Codesignaturzertifikat und den privaten Schlüssel verwenden:
    jarsigner -storetype pkcs12 -keystore mycert.pfx myapp.jar "aliasname"
    • Dabei ist „mycert.pfx“ der vollständige Pfad zur PFX/P12-Datei, die das Codesignaturzertifikat und den privaten Schlüssel enthält. Die Datei sollte auch alle Zwischenzertifikate beinhalten.
    • „aliasname“ wird im Kopfbereich der Ausgabe von Schritt 2 angezeigt. Wenn die PFX/P12-Datei aus Windows exportiert wurde, ist der Aliasname ein GUID.
    • Geben Sie nach Aufforderung das Passwort, das mit dem privaten Schlüssel verknüpft ist, in die PFX/P12-Datei ein. Sie können auch die Option „-storepass“ aufnehmen, um das Passwort in der Befehlszeile festzulegen.
    • Die unsignierte Eingabedatei heißt „myapp.jar“ und wird von der signierten Version der Datei überschrieben. Verwenden Sie die Befehlszeilenoption „-signedjar“, um getrennte Namen für die Eingabe- und Ausgabedatei anzugeben.
    Im folgenden Beispiel werden dem oben aufgeführten Beispiel noch Optionen für Zeitstempel hinzugefügt:
    jarsigner -storetype pkcs12 -keystore mycert.pfx -tsa http://tsa.starfieldtech.com/ myapp.jar "aliasname"
  5. Überprüfen und Bestätigen der signierten JAR-Datei
    jarsigner -verify -verbose -certs myapp.jar
  6. Den Code weitergeben

Links