Installieren Sie letsencrypt im Java Certificate Keystore (2. Antwort auf Fehler beim Erstellen des PKIX-Pfads fehlgeschlagen)

Hintergrund

Neulich als Problemumgehung für den folgenden Fehler

[Fehlermeldung]sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
[Fehlerübersicht]class javax.net.ssl.SSLHandshakeException
[Wo der Fehler aufgetreten ist]
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

Ich habe den folgenden Artikel geschrieben.

Korrekturmaßnahme für Fehler beim Erstellen des PKIX-Pfads fehlgeschlagen. Importieren Sie das API-serverseitige TLS-Zertifikat in den vertrauenswürdigen Host der JVM

Diese Methode kann den API-Anforderungsfehler beseitigen. Wenn Sie jedoch darüber nachdenken, müssen Sie ihn wahrscheinlich jedes Mal neu installieren, wenn das Zertifikat des Empfängers abläuft.

Als grundlegende Maßnahme habe ich untersucht, wie das Zertifikat von LetsEncrypt, dem Hauptbuch, installiert wird. Es beschreibt im Detail.

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

Darüber hinaus haben einige Leute das obige Verfahren als Shell-Skript auf Github veröffentlicht. Dieses Mal werde ich dies verwenden.

install-letsencrypt-in-jdk.sh

Ausführungsmethode

Skript herunterladen

Klon von Github. Geben Sie den Verzeichnisnamen an, damit Sie ihn später leicht verstehen können.

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

Java Home Directory Check

Suchen Sie den Speicherort des Java-Ausgangsverzeichnisses, in dem Sie das Zertifikat installieren möchten.

echo $ JAVA_HOME, which java, ort cacerts.

Keystore-Dateisicherung

Sichern Sie die Keystore-Dateien (Cacerts) für den Fall, dass dies fehlschlägt. Die Datei befindet sich in / jre / lib / security / cacerts im Java-Ausgangsverzeichnis.

Lauf

$ sudo  ./install-letsencrypt-in-jdk.sh <JAVA-Ausgangsverzeichnis zB./usr/java/latest>

Ausführungsergebnis

--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

Dieses Skript wird voraussichtlich mehrmals ausgeführt und implementiert auch das Entfernen des installierten Zertifikats aus dem Keystore. Daher wird der folgende Fehler angezeigt, da bei der ersten Ausführung kein Zertifikat vorhanden ist, aber kein Problem vorliegt.

** Vorgang löschen (insgesamt 6) **

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

** Fehler, die nur zum ersten Mal auftreten (insgesamt 6) **

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

Installationsbestätigung

Überprüfen Sie, ob es mit Keytool installiert wurde.

$ keytool -v -list -keystore $JAVA_HOME/jre/lib/security/cacerts | grep isrgrootx1
Enter keystore password:changeit ★ Enter und Enter ★
Alias name:isrgrootx1 ★ Wenn angezeigt, ist die Installation erfolgreich ★

Starten Sie neu

Es wird auch auf Github erwähnt, erfordert jedoch einen Neustart.

Funktionsprüfung

Überprüfen Sie, ob die API-Anforderung zu einem Fehler führt.

das ist alles. Es wird gespeichert.

Recommended Posts

Installieren Sie letsencrypt im Java Certificate Keystore (2. Antwort auf Fehler beim Erstellen des PKIX-Pfads fehlgeschlagen)
PKIX-Pfaderstellung fehlgeschlagen: Hinzufügen eines SSL-Zertifikats zu Java
Fehlerbehandlung mit Graphql-Ruby