Ich verwende das Spring RESTTemplate auf der Clientseite, um Aufrufe an einen REST-Endpunkt zu tätigen. Der Client ist in diesem Fall eine Spring-App und Tomcat ist der Servlet-Container.Warum kann ich den Truststore für einen SSL-Handshake nicht finden?
Ich bin in Probleme beim Herstellen einer Verbindung zu einem HTTPS-Endpunkt. Ich erhalte einen Fehler, der anzeigt, dass kein gültiger Pfad zum Truststore gefunden werden kann. Wo kann ich das angeben? Ist dies auf Containerebene oder auf der Ebene der Anwendungskonfiguration (Spring) ausgeführt?
Stapelüberwachung:
org.springframework.web.client.ResourceAccessException: I/O error:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target;
nested 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
org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:330)
org.springframework.web.client.RestTemplate.execute(RestTemplate.java:292)
org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:227)
Wo diesen Code schreiben? – kamaci
Sie können es überall schreiben, wo Sie möchten, weil es einen statischen Aufruf an die SSLContext-Klasse selbst macht. Solange Sie es im selben Classloader-Kontext und vor dem ersten HttpClient-Aufruf aufrufen, sollten Sie gut unterwegs sein. –
Nur um sicher zu sein: Ändern des TrustManager eines SSLContext wie oben beschrieben ist keine dauerhafte Aktion, oder? Es muss also jedes Mal, wenn die Anwendung gestartet wird, ausgeführt werden. – ptikobj