Ich benutze Spring-Vorlage, um eine Verbindung zu LDAP-Server über SSL. Ich benutzte den folgenden Befehl ein SSL-Zertifikat von Server zu speichern:Keine Verbindung zum LDAP-Server über ssl mit Spring-Vorlage
echo -n | openssl s_client -connect <ldapserverip>:<port> | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ldapserver.pem
Dann ging zu/jre/lib/security und ausgeführt, um den folgenden Befehl ein Zertifikat cacerts hinzuzufügen.
keytool -import -keystore cacerts -file ldapserver.pem
prüft dann die Zählung in der Liste der Einträge in cacerts dem Befehl:
keytool -list -keystore cacerts
ich die Anwendung in tomcat und tomcat auf gleiche JDK_HOME wird darauf leite.
Ich bekomme die folgende Ausnahme in tomcat während der Anmeldung mit authenticate() in ldapTemplate mit Feder.
Root exception is 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
Es funktionierte gut mit Nur-Text (ohne https). Ich habe versucht, VMArguments auch zu setzen, aber keiner von ihnen hat funktioniert.
-Djavax.net.ssl.trustStore="<path to cacerts file>"
-Djavax.net.ssl.trustStorePassword="<passphrase>"
Wie kann ich dieses Problem lösen?
Dank
Wenn Sie die '-showcerts' Option mit openssl verwenden können Sie alle Zertifikate in der Kette bis zu der ausstellenden Zertifizierungsstelle sehen Alle Zwischenzertifikate müssen ebenfalls importiert werden. – mvreijn
Dank mvreijn, wie Sie alle Zertifikate in der Kette bis zur Ausstellung von CA erhalten. Ich versuchte -showcerts Option, aber es sagt ungültige Option für openssl. – user1188867
-showcerts funktioniert gut, aber es zeigt nicht alle Zertifikate und in der letzten Zeile bekomme ich "Überprüfen Sie Return-Code: 21 (nicht in der Lage, das erste Zertifikat zu überprüfen)". Gibt es einen Befehl, um die gesamte Zertifikatskette zu bekommen, damit ich sie direkt in meine Cacerts importieren kann? – user1188867