Verwaltung von Zertifikaten in Java Keystore

Der folgende Text ist für Nutzer des Servers Apache Tomcat bestimmt, die Anwendungen (Applets) in Java signieren, und für die Verwaltung von Zertifikaten in dem Java-Keystore generell.

Hinweis: Zwischen der Erstellung der CSR-Anforderung für die Code Signing Zertifikate und für die Server Zertifikate besteht kein Unterschied. Als Common Name führen Sie den Namen von Ihrem Unternehmen auf.

Keystore und Schlüsselpaar erstellen

Die folgende Befehlszeile wird ein neues Keystore und Schlüsselpaar erstellen und dieses werden Sie für die Generierung der Zertifikatsanforderung benötigen: keytool -genkey -alias test -keyalg RSA -keystore test.jks -keysize 2048 Nachfolgend werden Sie zur Eingabe des Passwortes für das Keystore und seiner weiteren, konkretisierenden Angaben aufgefordert. Die eingegebenen Daten werden den Angaben in dem CSR entsprechen:

What is your first and last name?
[Unknown]: Test Test
What is the name of your organizational unit?
[Unknown]: Unit
What is the name of your organization?
[Unknown]: Test corp.
What is the name of your City or Locality?
[Unknown]: Some City
What is the name of your State or Province?
[Unknown]: Some State
What is the two-letter country code for this unit?
[Unknown]: US
Is CN=Test Test, OU=Unit, O=Test corp., L=Some City, ST=Some State, C=US correct?
[no]: yes

CSR erstellen

CSR generieren wir mit:
keytool -certreq -alias test -keystore test.jks -file test.csr Die Angaben über den Antragsteller haben Sie bei der Erstellung des Schlüsselpaars in dem vorherigen Schritt ausgefüllt, deshalb fragt nach ihnen KeyTool nicht mehr.

Mit dem Parameter -file test.csr wird sich der CSR-Code in eine Datei übertragen. Falls Sie ihn auslassen, schreibt sich der Text des CSR in dem Terminal heraus und Sie können ihn direkt in die Bestellung reinkopieren. Danach brauchen Sie nur auf die Ausstellung des Zertifikats zu warten.

Das ausgestellte Zertifikat nach Keystore importieren

Das ausgestellte Zertifikat, das Sie von SSLmarket per E-Mail erhalten haben, müssen Sie nach Keystore importieren.

Beim Importieren der Zertifikate setzt Keystore voraus, dass das Zertifikat vertrauenswürdig ist und die ausstellende Zertifizierungsstelle in dem Keystore bereits vorhanden ist. Das bedeutet, dass die Zertifikate in umgekehrter Reihenfolge importiert werden, also von dem Root- bis zu dem Server-Zertifikat.

Die Befehlszeile lautet:
keytool -import -trustcacerts -alias test -file test.txt -keystore test.jks

Error: Failed to establish chain from reply

Die erwähnte Bedingung des vorherigen Importierens der CA in das Keystore verursacht einen häufigen Fehler keytool error: java.lang.Exception: Failed to establish chain from reply. Diese Meldung bedeutet, dass in dem Keystore das ausstellende CA-Zertifikat (Intermediate) fehlt.

Das Problem hat drei Lösungsmöglichkeiten:

  • 1) Import in umgekehrter Reihenfolge - zuerst also die CA-Zertifikate (Root + Intermediate): keytool -import -trustcacerts -alias root -file intermediate.crt -keystore test.jks
  • 2) Import des Zertifikats in dem PKCS#7 (P7B) Format. Die Datei linux_cert+ca.pem, die Sie von SSLmarket erhalten haben, leiten Sie in P7B mit dem folgenden Befehl um: openssl crl2pkcs7 -nocrl -certfile linux_cert+ca.pem -out linux_cert+ca.p7b und nachfolgend importieren Sie die Datei in das Keystore:
    keytool -import -trustcacerts -alias test -file linux_cert+ca.p7b -keystore test.jks Das Ergebnis Certificate reply was installed in keystore bedeutet einen erfolgreichen Vorgang, der Fehler Public keys in reply and keystore don't match dagegen das Problem, dass es in der P7B Datei kein Server-Zertifikat (Endpoint) für die betreffende Domain gibt, sondern nur das Intermediate - Sie haben wahrscheinlich die .p7b Datei aus unserer Mail verwendet.

  • 3) Import des Zertifikats in dem PKCS#12 (PFX) Format, in dem alles gespeichert ist: keytool -importkeystore -srckeystore pkcs12file.p12 -srcstoretype pkcs12 -destkeystore test.jks -deststoretype JKS Diese Lösung ist die schnellste, aber falls Sie den CSR direkt im Keystore erstellt haben, werden Sie ihn nachträglich noch exportieren müssen.

Tools mit GUI

Falls Sie Keystore über die Befehlszeile oder über das Terminal nicht verwalten möchten, können Sie ein von den vielen Tools mit der grafischen Schnittstelle nutzen.

Beide von uns unten empfohlenen Programme können eine Keystore-Datei erstellen oder öffnen, CSR generieren und das ausgestellte Zertifikat zurück importieren.

Portecle

Portecle ist ein kostenloses Programm in Java, welches ermöglicht, Keystore grafisch zu verwalten. Die Schnittstelle ist mit verschiedenen Plattformen kompatibel (Linux, MacOS, Windows).

KeyStore Explorer

KeyStore Explorer funktioniert ähnlich wie Portecle und ebenfalls auf mehreren Plattformen.

Die erwähnten Programme basieren jedoch auf einer ähnlichen Logik wie das ursprüngliche Keystore, deshalb müssen sie Ihnen kein Arbeitsersparnis bringen.