Risposta dettagliata per quelli di noi che desiderano apportare modifiche alla configurazione locale che include il backup del file di configurazione:
1. Verifica se funziona prima delle modifiche
Se non hai già un programma di test, puoi utilizzare il mio programma java SSLPing ping che verifica l'handshake TLS (funzionerà con qualsiasi porta SSL / TLS, non solo HTTPS). Userò SSLPing.jar precompilato, ma leggere il codice e crearlo da solo è un'operazione semplice e veloce:
$ git clone https://github.com/dimalinux/SSLPing.git
Cloning into 'SSLPing'...
[... output snipped ...]
Poiché la mia versione di Java è precedente alla 1.8.0_101 (non rilasciata al momento della stesura di questo documento), un certificato Let's Encrypt non verrà verificato per impostazione predefinita. Vediamo come si presenta l'errore prima di applicare la correzione:
$ 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. Importare il certificato
Sono su Mac OS X con la variabile d'ambiente JAVA_HOME impostata. I comandi successivi presumeranno che questa variabile sia impostata per l'installazione java che stai modificando:
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/
Eseguire un backup del file cacerts che modificheremo in modo da poter annullare qualsiasi modifica senza reinstallare JDK:
$ sudo cp -a $JAVA_HOME/jre/lib/security/cacerts $JAVA_HOME/jre/lib/security/cacerts.orig
Scarica il certificato di firma che dobbiamo importare:
$ wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.der
Eseguire l'importazione:
$ 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. Verificare che funzioni dopo le modifiche
Verifica che Java sia ora felice di connettersi alla porta SSL:
$ java -jar SSLPing/dist/SSLPing.jar helloworld.letsencrypt.org 443
About to connect to 'helloworld.letsencrypt.org' on port 443
Successfully connected