Wenn Client Programme wie z.B. Java auf einen SSL verschlüsselten Server zugreifen, der über ein selbst signiertes Zertifikat verfügt, dann muss man das Zertifikat in den TrustStore von Java bzw. Tomcat importieren.
Es gibt einen systemweiten Truststore , wenn Sie das systemweiten TrustStore von Java verwenden, liegt dies in $JAVA_HOME/jre/lib/security/cacerts . Dann würde der Befehl lauten:
sudo keytool -import -alias myssl -file /root/capub.crt -keystore $JAVA_HOME/jre/lib/security/cacerts
Ggf. müssen Sie hier das Passwort des keystore eingeben. Danach kommt die Sicherheitsabfrage
Diesem Zertifikat vertrauen? [Nein]: Ja
Zertifikat wurde zu Keystore hinzugefügt.
Wenn Sie für Tomcat einen speziellen Truststore definieren, z.B. durch den Tomcat Start Parameter
-Djavax.net.ssl.trustStore=/usr/local/tomcat/conf/cacerts
dann müssen Sie den Zielpfad für den Import entsprechend anpassen:
sudo keytool -import -alias myssl -file /root/capub.crt -keystore /usr/local/tomcat/conf/cacerts
In der HISinOne-BI kann der TrustStore in der globalen Konfiguration im Parameter KEYSTORE=... gesetzt werden. Das Vorgehen wäre hier analog.
Falls Sie das Zertifikat des Ziel-Server nicht zur Hand haben, können Sie es auch direkt herunterladen:
openssl s_client -connect <<hostname>>:<<Port>> -showcerts
Es erscheint ein längerer Text, das letzte Zertifikat innerhalb der Markierungen "---" ist das Zertifikat. Kopieren Sie dies in eine Textdatei z.B. mit dem Namen ./my-ca.crt
Achtung: beim Kopieren in Terminalprogrammen wie Putty können Zeilenumbrüche vorhanden sein. Diese müssen Sie entfernen.
Hier noch 2 weitere und einfache Varianten:
Mit dem folgenden Befehl wird das Zertifikat automatisch in die Datei my-ca.crt abgespeichert. Das Copy & Paste entfällt damit. Der Weg ist zwar einfacher, überprüfen Sie aber bitte die Datei my-ca.crt, ob auch kein Fehler aufgetreten ist.
echo | openssl s_client -connect <<hostname>>:<<Port>> 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > my-ca.crt
Falls Das Zertifikat in x509 format benötigt wird, bitte folgenden Befehl verwenden:
openssl x509 -in <(openssl s_client -connect ads.hs-karlsruhe.de:636 -prexit 2>/dev/null) > my-ca.crt
Danach können Sie das Zertifikat importieren mit
$JAVA_HOME/bin/keytool -importcert -alias myssl -keystore $JAVA_HOME/jre/lib/security/cacerts -trustcacerts -file ./my-ca.crt
Der Befehl keytool ist recht flexibel, man kann damit auch Zertifikate anschauen ( -list ) oder löschen ( -delete ). Details liefert die Ausgabe von keytool -help .