Tomcat mit SSL Zertifikat ausstatten

stefan-becker

Blog Benutzer
Hallo zusammen,

ich breche hier gerade zusammen. Ich möchte meinen Tomcat mit einem CA signierten Zertifikat ausstatten.

Hierzu habe ich einen Keystore angelegt:
Code:
keytool -genkey -keyalg RSA -keystore eakte.keystore

Dann einen CSR erstellt:
Code:
keytool -certreq -keyalg RSA -file eakte.csr -keystore eakte.keystore

Und diesen an die CA geschickt. Von dort habe ich dann vier CRT Files bekommen:
  • AddTrustExternalCARoot.crt
  • COMODORSAAddTrustCA.crt
  • COMODORSAOrganizationValidationSecureServerCA.crt
  • eakte_example_com.crt

Dann habe ich die Zertifikate nach der Reihe in den Keystore geschoben, mit
Code:
keytool.exe -import -trustcacerts -alias intermediate_COMODORSAAddTrustCA -file COMODORSAAddTrustCA.crt -keystore eakte.keystore

Wenn ich jetzt den Keystore in der Tomcat Konfiguration hinterlege, sehe ich im Logfile
the message error:0906D06C:pEM routines:pEM_read_bio:no start line

Dann habe ich den Keystore in PKCS#12 umgewandelt
Code:
keytool.exe -importkeystore -srckeystore eakte.keystore -destkeystore eakte.p12 -srcstoretype jks -deststoretype pkcs12

Und dann in PEM
Code:
openssl pkcs12 -in eakte.p12 -out eakte.pem
Nun sehe ich keinen Fehler mehr im Log, wenn ich mit open_ssl teste, sehe ich das eigentliche Zertifikat, aber die Zertifikatskette. Das merkt dann auch openssl an.

Weiß jemand, was ich falsch mache? Oder baue das falsch zusammen?

Stefan
 

greystone

Member
Hi Stefan,

ich habe hier nur etwas "machs-anders"-Hilfe. :) Ich habe vor allen meinen Tomcats immer einen Webserver(idR apache) davor, womit ich per Proxy zum Tomcat durchleite. Lässt sich wesentlich einfacher konfigurieren.

Aber direkt mit Tomcat muss das natürlich auch gehen.

Grüße,
h.
 

marce

Well-Known Member
ich freu mich auch immer, wenn ich für TomCat Zertifikate erstellen darf.

Aktuell habe ich folgenden, bisher immer funktionierenden Workflow:
Code:
#!/bin/bash
 
domain=$1
 
openssl pkcs8 -topk8 -nocrypt -in ${domain}.key -inform PEM -out ${domain}.key.der -outform DER
openssl x509 -in ${domain}.crt  -inform PEM -out ${domain}.crt.der -outform DER
openssl x509 -in intermediates.crt -inform PEM -out intermediates.crt.der -outform DER
 
cat ${domain}.crt.der intermediates.crt.der > ${domain}_all.crt.der
 
/usr/local/java_1_8/bin/java ImportKey ${domain}.key.der ${domain}_all.crt.der
mv ~/keystore.ImportKey ${domain}.ImportKey
 
/usr/local/java_1_8/bin/keytool -keystore ${domain}.ImportKey -storepasswd -new changeit
/usr/local/java_1_8/bin/keytool -keystore ${domain}.ImportKey -changealias -alias importkey -destalias "${domain}"
/usr/local/java_1_8/bin/keytool -keystore ${domain}.ImportKey -keypasswd -alias "${domain}" -new changeit

braucht noch ein ImportKey.class / .java - Quelle müsste ich noch googlen.

edit: das müsste es sein: https://github.com/cornet/importkey

ich hab' hier auch ca. 5 verschiedene Wege, das komplett über OpenSSL zu erledigen, die jeder je nach Java-Version und Quelle des Zertifikats und Umfang der intermediates mal mehr oder weniger zuverlässig funktionieren.

Manchmal findet mal auch in der Doku der jeweiligen CA funktionierende Tipps. Oder gleich die Option, das Ding als fertigen Java-KeyStore herunterzuladen.
 
Last edited by a moderator:
Top