Detaillierte Antwort für diejenigen von uns, die bereit sind, lokale Konfigurationsänderungen vorzunehmen, einschließlich der Sicherung der Konfigurationsdatei:
1. Testen Sie vor den Änderungen, ob es funktioniert
Wenn Sie noch kein Testprogramm haben, können Sie mein Java-SSLPing-Ping-Programm verwenden, das den TLS-Handshake testet (funktioniert mit jedem SSL / TLS-Port, nicht nur mit HTTPS). Ich werde die vorgefertigte SSLPing.jar verwenden, aber das Lesen des Codes und das Erstellen selbst ist eine schnelle und einfache Aufgabe:
$ git clone https://github.com/dimalinux/SSLPing.git
Cloning into 'SSLPing'...
[... output snipped ...]
Da meine Java-Version früher als 1.8.0_101 ist (zum Zeitpunkt dieses Schreibens noch nicht veröffentlicht), wird ein Let's Encrypt-Zertifikat standardmäßig nicht überprüft. Lassen Sie uns sehen, wie ein Fehler aussieht, bevor Sie das Update anwenden:
$ java -jar SSLPing/dist/SSLPing.jar helloworld.letsencrypt.org 443
About to connect to 'helloworld.letsencrypt.org' on port 443
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
[... output snipped ...]
2. Importieren Sie das Zertifikat
Ich arbeite unter Mac OS X mit der Umgebungsvariablen JAVA_HOME. Spätere Befehle setzen voraus, dass diese Variable für die Java-Installation festgelegt ist, die Sie ändern:
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/
Erstellen Sie eine Sicherungskopie der Cacerts-Datei, die wir ändern werden, damit Sie alle Änderungen rückgängig machen können, ohne das JDK neu zu installieren:
$ sudo cp -a $JAVA_HOME/jre/lib/security/cacerts $JAVA_HOME/jre/lib/security/cacerts.orig
Laden Sie das zu importierende Signaturzertifikat herunter:
$ wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.der
Führen Sie den Import durch:
$ sudo keytool -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -importcert -alias lets-encrypt-x3-cross-signed -file lets-encrypt-x3-cross-signed.der
Certificate was added to keystore
3. Stellen Sie sicher, dass es nach den Änderungen funktioniert
Stellen Sie sicher, dass Java jetzt gerne eine Verbindung zum SSL-Port herstellt:
$ java -jar SSLPing/dist/SSLPing.jar helloworld.letsencrypt.org 443
About to connect to 'helloworld.letsencrypt.org' on port 443
Successfully connected