Je sais que cela a été demandé auparavant, mais j'ai essayé toutes les solutions que j'ai trouvées et cela ne fonctionne toujours pas. Fondamentalement, j'essaye d'obtenir du contenu via Apache Http Client (4.3) et le site Web que je connecte a quelques problèmes de SSL.Apache Http Client SSL erreur de certificat
D'abord, je recevais et SSLException
avec et unrecognized_name
message. J'ai essayé de contourner cela en définissant la propriété jsse.enableSNIExtension
à false
.
Ensuite, je suis arrivé cette exception: 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
J'ai ensuite essayé fournir mon won SSLFactory
qui accepte tous les certificats, mais je reçois toujours la même exception. Voici mon code:
private static void sslTest() throws Exception {
System.setProperty("jsse.enableSNIExtension", "false");
SSLContext sslContext = SSLContexts.custom()
.loadTrustMaterial(null, new TrustSelfSignedStrategy())
.useTLS()
.build();
SSLConnectionSocketFactory connectionFactory =
new SSLConnectionSocketFactory(sslContext, new AllowAllHostnameVerifier());
CookieStore cookieStore = new BasicCookieStore();
HttpClientContext context = HttpClientContext.create();
context.setCookieStore(cookieStore);
CloseableHttpClient httpclient = HttpClients.custom()
.setSSLSocketFactory(connectionFactory)
.setDefaultCookieStore(cookieStore)
.build();
URI uri = new URIBuilder()
.setScheme("https")
.setHost(BASE_URL)
.build();
String responseBody = httpclient.execute(new HttpGet(uri), RESPONSE_HANDLER);
}
Toute aide est grandement appréciée!
S'il vous plaît regarder ma réponse dans une autre question: https://stackoverflow.com/a/45734000/8477758 – EyouGo