SSLHandshakeException PKIX-Pfaderstellung in Adobe Experience Manager as a Cloud Service fehlgeschlagen
In Adobe Experience Manager as a Cloud Service kann ein Java-basierter Anwendungs-Server keine Verbindung zu einem AEMaaCS-Endpunkt herstellen und zeigt einen SSL-Handshake-Fehler mit der Meldung PKIX-Pfad-Erstellung fehlgeschlagen an. Dies tritt auf, wenn Java keine vertrauenswürdige Zertifikatskette für den Endpunkt herstellen kann. Um dieses Problem zu beheben, überprüfen Sie die Java-TrustStore-Konfiguration und stellen Sie sicher, dass die erforderlichen DigiCert-Zertifikate vorhanden und vertrauenswürdig sind.
Beschreibung description
Umgebung
- Adobe Experience Manager as a Cloud Service (alle Versionen)
- Java-basierter interner Anwendungsserver
Problem/Symptome
- Die Java-Anwendung kann keine Verbindung zu einem AEMaaCS-Endpunkt herstellen. PKIX-Pfad: Fehler beim Erstellen von SSLHandshakeException.
- Die OpenSSL-Validierung vom selben Server ist erfolgreich.
Ursache
Die von der Anwendung verwendete Java-Laufzeitumgebung vertraut nicht den DigiCert-Stamm- oder Zwischenzertifikaten, die für den AEMaaCS-Endpunkt erforderlich sind, was zu einem Fehler bei der Validierung der Zertifikatkette führt.
Lösung resolution
Gehen Sie wie folgt vor, um das Problem zu beheben.
-
Identifizieren Sie den von Ihrer Anwendung verwendeten Java-TrustStore.Standardmäßig ist dies normalerweise die
cacerts-Datei im Sicherheitsverzeichnis der Java-Installation. -
Listen Sie die DigiCert-Zertifikate in Ihrem TrustStore mit dem folgenden Befehl auf.
- Ersetzen Sie
<path-to-truststore>durch Ihren TrustStore-Pfad. - Durchgang:
keytool -list -keystore <path-to-truststore> | grep -i "DigiCert" - Geben Sie bei Aufforderung das TrustStore-Kennwort ein.
- Ersetzen Sie
-
Vergewissern Sie sich, dass der TrustStore die erforderlichen DigiCert-Stamm- und Zwischenzertifikate für Adobe Experience Manager as a Cloud Service-Endpunkte enthält.Suchen Sie nach Einträgen wie
DigiCert Global Root G2oder anderen DigiCert-Stamm-/Zwischenzertifikaten. -
Um Details zu einem bestimmten DigiCert-Zertifikatalias anzuzeigen, führen Sie Folgendes aus:
keytool -list -v -keystore -alias -
Stellen Sie sicher, dass Ihre Java-Anwendung den erwarteten TrustStore und die Java-Version verwendet.
- run:
java -version - Stellen Sie sicher, dass es keine benutzerdefinierten JVM-SSL-/TrustStore-Einstellungen wie
javax.net.ssl.trustStoreoderjavax.net.ssl.trustStoreTypegibt, die den standardmäßigen TrustStore überschreiben.
- run:
-
Wenn OpenSSL die Zertifikatkette validiert, Java jedoch nicht, ist das Problem wahrscheinlich mit der Java-TrustStore-Konfiguration oder fehlenden DigiCert-Zertifikaten verbunden.
Hinweis: Importieren Sie keine zusätzlichen oder doppelten DigiCert-Zertifikate, es sei denn, dies wird ausdrücklich empfohlen.
-
Nachdem Sie bestätigt haben, dass die erforderlichen DigiCert-Zertifikate vorhanden sind und der richtige TrustStore verwendet wird, starten Sie Ihre Anwendung neu und überprüfen Sie, ob der SSL-Handshake-Fehler behoben wurde.