I’m not sure if I’m daft or just missing something super obvious, but I’m trying to setup HttpClient to connect to a Spring Boot server using a self signed cert, pretty much all day. Works fine via Chome, Python’s ‘requests’ module, and Objective-C but no matter what I do, this exception haunts me.
java.lang.RuntimeException: 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 at com.zorroa.archivist.sdk.client.ExceptionTranslator.translate(ExceptionTranslator.java:9) ~[archivist-sdk-0.17.0.jar:na] at com.zorroa.archivist.sdk.client.Http.post(Http.java:39) ~[archivist-sdk-0.17.0.jar:na] at com.zorroa.archivist.sdk.client.archivist.ArchivistClient.registerAnalyst(ArchivistClient.java:57) ~[archivist-sdk-0.17.0.jar:na] at com.zorroa.analyst.service.RegisterServiceImpl.runOneIteration(RegisterServiceImpl.java:45) ~[classes/:na] at com.google.common.util.concurrent.AbstractScheduledService$1$1.run(AbstractScheduledService.java:174) [guava-18.0.jar:na] at com.google.common.util.concurrent.Callables$3.run(Callables.java:95) [guava-18.0.jar:na] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_65] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_65] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_65] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_65] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_65] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_65] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_65] Caused by: 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 I’ve basically tried 1000 different combinations of HttpClient setup and versions, but this is how I’m setting it up currently: this.client = HttpClients.custom() .setConnectionManager(new PoolingHttpClientConnectionManager()) .setSSLSocketFactory(new SSLConnectionSocketFactory(SSLContexts.custom() .loadTrustMaterial(null, new TrustSelfSignedStrategy()) .build())) .setSSLHostnameVerifier(new NoopHostnameVerifier()) .build(); Any help would be greatly appreciated. -Matt