Installez letsencrypt dans le fichier de clés du certificat java (2e réponse à l'erreur d'échec de la construction du chemin PKIX)

Contexte

L'autre jour, comme solution de contournement pour l'erreur suivante

[Message d'erreur]sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
[Résumé des erreurs]class javax.net.ssl.SSLHandshakeException
[Où l'erreur s'est produite]
Alerts.java[192] sun.security.ssl.Alerts.getSSLException
SSLSocketImpl.java[1949] sun.security.ssl.SSLSocketImpl.fatal
Handshaker.java[302] sun.security.ssl.Handshaker.fatalSE
Handshaker.java[296] sun.security.ssl.Handshaker.fatalSE
ClientHandshaker.java[1509] sun.security.ssl.ClientHandshaker.serverCertificate

J'ai écrit l'article suivant.

Action corrective pour l'erreur de construction du chemin PKIX. Importez le certificat TLS côté serveur API vers l'hôte de confiance de la JVM

Cette méthode peut éliminer l'erreur de demande d'API, mais si vous y réfléchissez, vous devrez probablement la réinstaller chaque fois que le certificat du destinataire expire.

Donc, comme mesure fondamentale, j'ai étudié comment installer le certificat de LetsEncrypt, qui est le livre principal. Il décrit en détail.

SSL error: How to import the Let's Encrypt certificates in the Java truststore - Tutorials & Examples / Solutions - openHAB Community

De plus, certaines personnes ont publié la procédure ci-dessus sous forme de script shell sur Github. Cette fois, je vais l'utiliser.

install-letsencrypt-in-jdk.sh

Méthode d'exécution

Téléchargement du script

Cloner depuis Github. Spécifiez le nom du répertoire afin de pouvoir le comprendre facilement plus tard.

$ git clone https://gist.github.com/109b0f1a90156f6c933a50fe40aa777e.git install_letsencrypt_to_java_cacerts
$ cd install_letsencrypt_to_java_cacerts

Vérification du répertoire de base Java

Recherchez l'emplacement du répertoire de base Java dans lequel vous souhaitez installer le certificat.

ʻEcho $ JAVA_HOME, quel java, localiser les cacerts`.

Sauvegarde du fichier Keystore

Sauvegardez les fichiers de keystore (cacerts) au cas où cela échouerait. Le fichier se trouve dans / jre / lib / security / cacerts sous le répertoire de base Java.

Courir

$ sudo  ./install-letsencrypt-in-jdk.sh <Répertoire de base JAVA, par exemple./usr/java/latest>

Résultat d'exécution

--2019-06-29 10:28:00--  https://letsencrypt.org/certs/letsencryptauthorityx1.der
Resolving letsencrypt.org (letsencrypt.org)... 184.26.113.203, 2600:140b:a000:295::ce0, 2600:140b:a000:29b::ce0
Connecting to letsencrypt.org (letsencrypt.org)|184.26.113.203|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1425 (1.4K) [application/x-x509-ca-cert]
Saving to: ‘letsencryptauthorityx1.der’

letsencryptauthorityx1.der             100%[=========================================================================>]   1.39K  --.-KB/s    in 0s      

2019-06-29 10:28:00 (247 MB/s) - ‘letsencryptauthorityx1.der’ saved [1425/1425]

--2019-06-29 10:28:00--  https://letsencrypt.org/certs/letsencryptauthorityx2.der
Resolving letsencrypt.org (letsencrypt.org)... 184.26.113.203, 2600:140b:a000:29b::ce0, 2600:140b:a000:295::ce0
Connecting to letsencrypt.org (letsencrypt.org)|184.26.113.203|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1425 (1.4K) [application/x-x509-ca-cert]
Saving to: ‘letsencryptauthorityx2.der’

letsencryptauthorityx2.der             100%[=========================================================================>]   1.39K  --.-KB/s    in 0s      

2019-06-29 10:28:00 (255 MB/s) - ‘letsencryptauthorityx2.der’ saved [1425/1425]

--2019-06-29 10:28:00--  https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.der
Resolving letsencrypt.org (letsencrypt.org)... 184.26.113.203, 2600:140b:a000:295::ce0, 2600:140b:a000:29b::ce0
Connecting to letsencrypt.org (letsencrypt.org)|184.26.113.203|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1196 (1.2K) [application/x-x509-ca-cert]
Saving to: ‘lets-encrypt-x1-cross-signed.der’

lets-encrypt-x1-cross-signed.der       100%[=========================================================================>]   1.17K  --.-KB/s    in 0s      

2019-06-29 10:28:00 (136 MB/s) - ‘lets-encrypt-x1-cross-signed.der’ saved [1196/1196]

--2019-06-29 10:28:00--  https://letsencrypt.org/certs/lets-encrypt-x2-cross-signed.der
Resolving letsencrypt.org (letsencrypt.org)... 184.26.113.203, 2600:140b:a000:29b::ce0, 2600:140b:a000:295::ce0
Connecting to letsencrypt.org (letsencrypt.org)|184.26.113.203|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1196 (1.2K) [application/x-x509-ca-cert]
Saving to: ‘lets-encrypt-x2-cross-signed.der’

lets-encrypt-x2-cross-signed.der       100%[=========================================================================>]   1.17K  --.-KB/s    in 0s      

2019-06-29 10:28:00 (217 MB/s) - ‘lets-encrypt-x2-cross-signed.der’ saved [1196/1196]

--2019-06-29 10:28:00--  https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.der
Resolving letsencrypt.org (letsencrypt.org)... 184.26.113.203, 2600:140b:a000:295::ce0, 2600:140b:a000:29b::ce0
Connecting to letsencrypt.org (letsencrypt.org)|184.26.113.203|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1174 (1.1K) [application/x-x509-ca-cert]
Saving to: ‘lets-encrypt-x3-cross-signed.der’

lets-encrypt-x3-cross-signed.der       100%[=========================================================================>]   1.15K  --.-KB/s    in 0s      

2019-06-29 10:28:00 (215 MB/s) - ‘lets-encrypt-x3-cross-signed.der’ saved [1174/1174]

--2019-06-29 10:28:00--  https://letsencrypt.org/certs/lets-encrypt-x4-cross-signed.der
Resolving letsencrypt.org (letsencrypt.org)... 184.26.113.203, 2600:140b:a000:29b::ce0, 2600:140b:a000:295::ce0
Connecting to letsencrypt.org (letsencrypt.org)|184.26.113.203|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1174 (1.1K) [application/x-x509-ca-cert]
Saving to: ‘lets-encrypt-x4-cross-signed.der’

lets-encrypt-x4-cross-signed.der       100%[=========================================================================>]   1.15K  --.-KB/s    in 0s      

2019-06-29 10:28:00 (220 MB/s) - ‘lets-encrypt-x4-cross-signed.der’ saved [1174/1174]

Certificate was added to keystore
Certificate was added to keystore
Certificate was added to keystore
Certificate was added to keystore
Certificate was added to keystore
Certificate was added to keystore

Ce script devrait être exécuté plusieurs fois et implémente également le processus de suppression du certificat installé du fichier de clés. Par conséquent, l'erreur suivante s'affiche car il n'y a pas de certificat lors de la première exécution, mais il n'y a pas de problème.

** Processus de suppression (6 au total) **

keytool -delete -alias isrgrootx1 -keystore $KEYSTORE -storepass changeit 2> /dev/null || true

** Erreurs qui ne se produisent que pour la première fois (6 au total) **

keytool error: java.lang.Exception: Alias <isrgrootx1> does not exist

Confirmation d'installation

Vérifiez s'il a été installé à l'aide de keytool.

$ keytool -v -list -keystore $JAVA_HOME/jre/lib/security/cacerts | grep isrgrootx1
Enter keystore password:changeit ★ Entrez et entrez ★
Alias name:isrgrootx1 ★ Si affiché, l'installation est réussie ★

Redémarrer

Il est également mentionné sur Github, mais il nécessite un redémarrage.

Contrôle de fonctionnement

Vérifiez si la demande d'API entraîne une erreur.

c'est tout. Il sera sauvé.

Recommended Posts

Installez letsencrypt dans le fichier de clés du certificat java (2e réponse à l'erreur d'échec de la construction du chemin PKIX)
La construction du chemin PKIX a échoué: ajouter un certificat SSL à java
Gestion des erreurs avec Graphql-ruby