[gelöst] Zertifikate von Trustcenter lässt sich nicht in keyfile für JBoss importieren

bitmuncher

Senior-Nerd
Leider habe ich keinen besseren Bereich gefunden, denn einerseits ist es ein Problem des Servers, andererseits auch ein Problem mit Java und mittlerweile denke ich, dass es auch ein Problem von OpenSSL sein könnte. Wenn ein Moderator einen besseren Platz kennt, dann bitte verschieben.

Aber erstmal zum Problem. Ich habe ein Zertifikat von Trustcenter, für das ich das CSR mit dem 'keytool' des Sun-JDK (1.4.2) erstellt habe. Bis dahin auch weiter kein Problem, CSR wurde akzeptiert usw. Nun will ich dieses Zertifikat in das von keytool erstellte keyfile (aus dem ich auch das CSR erstellt habe) importieren, bekomme aber immer nur die Fehlermeldung:
Code:
keytool error: java.lang.Exception: Failed to establish chain from reply
Meine Recherchen haben ergeben, dass es dafür angeblich 2 Ursachen geben kann.

1. Es gibt kein Root-Zertifikat im Keystore. Ein 'keytool -list -keystore name.keystore' zeigt mir aber einen keyEntry mit dem Alias an, dass ich auch zur Generierung des CSR benutzt habe.

2. Das Zertifikat hat ein falsches Format, was ich aber nach meinem Wissen mit

keytool -keystore name.keystore -keyalg RSA -import -trustcacerts -alias myalias -file my_certificate.crt

umgehen können sollte.

Was auch immer ich versuche, ich lande im Endeffekt immer beim oben genannten Fehler und der Server liefert nur ein "untrusted certificate" aus, da der Issuer im Zertifikat natürlich nicht stimmt solange ich das signierte nicht importieren kann.

Hat evtl. jemand eine Idee, ob es hier evtl. noch eine andere Ursache geben könnte?

Edit: Nach einigen Stunden rumprobieren und Lösungsansätze aus Foren durchtesten habe ich nun scheinbar die Ursache gefunden. Das Problem scheint die Zertifizierungsstelle zu sein, die nicht in der cacerts-Datei des JDK eingetragen ist. Wenn ich aber nun das Zertifikat von Trustcenter in die Datei importieren, bekomme ich ein NullPointerException.

$ keytool -import -alias tctrustcenter -keystore /opt/java/jdk/jre/lib/security/cacerts -file /www/ssl/jboss/tc_cert.der
Enter keystore password:
keytool error: java.lang.NullPointerException

Selbiges passiert auch, wenn ich das Zertifikat im PKCS7-Format nutze. Ich weiss nur nicht, warum dieser Fehler kommt. :(

Edit2: Und wieder bin ich einen Schritt weiter. Ich habe jetzt einen keystore, in dem das entsprechende Zertifikat drin ist. Allerdings wird er vom JBoss nicht akzeptiert. Dieser wirft nur "java.net.SocketException: SSL handshake errorjavax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled." aus. Irgendeiner der Java-Entwickler hier eine Idee, wie ich das ändern kann.

Edit3: Das Problem ist jetzt gelöst. Lösungsweg:

1. Root-Zertifikat des Issuers mit dem Alias 'root' in den keystore importieren, aus dem der CSR erstellt wurde. Dieses Root-Zertifikat bekommt man meist auf der Homepage der Zertifizierungsstelle und muss im PEM-Format sein.
2. Server-Zertifikat mit dem gleichen Alias und der Option '-trustcacerts' importieren, mit dem der keyEntry angelegt wurde. Diesmal sollte die oben genannte Fehlermeldung (Failed to establish chain from reply) nicht mehr auftauchen.
3. Zertifikat mit dem Alias 'root' wieder löschen.

Danach ist der keystore für den JBoss-AS nutzbar und liefert das korrekte Zertifikat aus.
 
Zurück
Oben