Réponse détaillée pour ceux d'entre nous souhaitant apporter des modifications de configuration locales qui incluent la sauvegarde du fichier de configuration:
1. Testez si cela fonctionne avant les changements
Si vous n'avez pas encore de programme de test, vous pouvez utiliser mon programme java SSLPing ping qui teste la négociation TLS (fonctionnera avec n'importe quel port SSL / TLS, pas seulement HTTPS). J'utiliserai le SSLPing.jar prédéfini, mais lire le code et le construire vous-même est une tâche rapide et facile:
$ git clone https://github.com/dimalinux/SSLPing.git
Cloning into 'SSLPing'...
[... output snipped ...]
Comme ma version Java est antérieure à 1.8.0_101 (non publiée au moment de la rédaction de cet article), un certificat Let's Encrypt ne sera pas vérifié par défaut. Voyons à quoi ressemble l'échec avant d'appliquer le correctif:
$ 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. Importez le certificat
Je suis sous Mac OS X avec le jeu de variables d'environnement JAVA_HOME. Les commandes ultérieures supposeront que cette variable est définie pour l'installation java que vous modifiez:
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/
Faites une sauvegarde du fichier cacerts que nous allons modifier afin que vous puissiez annuler toute modification sans réinstaller le JDK:
$ sudo cp -a $JAVA_HOME/jre/lib/security/cacerts $JAVA_HOME/jre/lib/security/cacerts.orig
Téléchargez le certificat de signature que nous devons importer:
$ wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.der
Effectuez l'importation:
$ 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. Vérifiez qu'il fonctionne après les modifications
Vérifiez que Java est maintenant bien connecté au port SSL:
$ java -jar SSLPing/dist/SSLPing.jar helloworld.letsencrypt.org 443
About to connect to 'helloworld.letsencrypt.org' on port 443
Successfully connected