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 von dem CSR-Code für Code Signing Zertifikate und für 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 nutzen: 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

Erstellung von CSR

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 Paramater -file test.csr wird sich der CSR-Code in eine Datei übertragen. Falls Sie ihn auslassen, schreibt sich der Text des Codes in dem Terminal heraus und Sie können ihn direkt in die Bestellung kopieren. Danach brauchen Sie nur auf die Ausstellung des Zertifikats zu warten.

Import des ausgestellten Zertifikats nach Keystore

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

Beim Import von Zertifikaten 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 von dem vorherigen Import 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, führen Sie in P7B mit dem Befehl openssl crl2pkcs7 -nocrl -certfile linux_cert+ca.pem -out linux_cert+ca.p7b über 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 für die betreffende Domain kein Server-Zertifikat (Endpoint) 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 mit Keystore mithilfe der Befehlszeile oder des Terminals nicht arbeiten 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 kein Arbeitsersparnis bringen.