Resposta detalhada para aqueles de nós dispostos a fazer alterações locais na configuração, incluindo o backup do arquivo de configuração:
1. Teste se está funcionando antes das alterações
Se você ainda não possui um programa de teste, pode usar meu programa ping SSLPing java que testa o handshake TLS (funcionará com qualquer porta SSL / TLS, não apenas HTTPS). Usarei o SSLPing.jar predefinido, mas ler o código e construí-lo você mesmo é uma tarefa rápida e fácil:
$ git clone https://github.com/dimalinux/SSLPing.git
Cloning into 'SSLPing'...
[... output snipped ...]
Como minha versão do Java é anterior a 1.8.0_101 (não liberada no momento da redação deste documento), um certificado Let's Encrypt não será verificado por padrão. Vamos ver como é a falha antes de aplicar a correção:
$ 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. Importe o certificado
Estou no Mac OS X com o conjunto de variáveis de ambiente JAVA_HOME. Os comandos posteriores assumirão que esta variável está definida para a instalação do java que você está modificando:
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/
Faça um backup do arquivo cacerts que modificaremos para que você possa fazer o backup de qualquer alteração sem reinstalar o JDK:
$ sudo cp -a $JAVA_HOME/jre/lib/security/cacerts $JAVA_HOME/jre/lib/security/cacerts.orig
Faça o download do certificado de assinatura que precisamos importar:
$ wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.der
Execute a importação:
$ 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. Verifique se está funcionando após as alterações
Verifique se o Java está feliz em se conectar à porta SSL:
$ java -jar SSLPing/dist/SSLPing.jar helloworld.letsencrypt.org 443
About to connect to 'helloworld.letsencrypt.org' on port 443
Successfully connected