ich die folgende Ausnahme bin immer:Ignorieren SSL-Zertifikat in einem Servlet
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
ich tat etwas Forschung und änderte meine Verbindungscode dieses:
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
public boolean isTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
return true;
}
}).build();
CloseableHttpClient client = HttpClients.custom()
.setRedirectStrategy(new LaxRedirectStrategy())
.setSslcontext(sslContext)
.setConnectionManager(connMgr)
.build();
Dieses Problem bisher fixiert, ich bin nicht mehr die Ausnahme und die Verbindung funktioniert.
Das Problem tritt wieder auf, wenn ich denselben Code in einem Servlet verwende, das in Tomcat läuft.
Warum?
Ich denke, das war die CertificateException anzugehen, die erschien, als ich den Keystore hinzufügte und die .crt importierte. Stellt sich heraus, dass ich diese Problemumgehung nicht wirklich verwenden kann, möchte ich lieber die ursprüngliche SunCertPathBuilderException vermeiden. – Tim
Trotzdem habe ich Ihre Lösung versucht und ich bekomme diesen Fehler jetzt: 'java.security.KeyStoreException: Problem Zugriff auf Trust storejava.security.cert.CertificateParsingException: signed overrun, bytes = 266 bei com.sun.net.ssl.internal. ssl.TrustManagerFactoryImpl.engineInit (TrustManagerFactoryImpl.java:55) ' – Tim
Ihre Antwort ließ mich das Ganze überprüfen und ich hatte einen Fehler in meinem Code. Da du der einzige bist, der geantwortet hat, ist es fair, dass du das Kopfgeld bekommst :) Danke – Tim