How to ignore PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException?
If you want to ignore the certificate all together then take a look at the answer here: Ignore self-signed ssl cert using Jersey Client
Although this will make your app vulnerable to man-in-the-middle attacks.
Or, try adding the cert to your java store as a trusted cert.This site may be helpful.http://blog.icodejava.com/tag/get-public-key-of-ssl-certificate-in-java/
Here's another thread showing how to add a cert to your store.Java SSL connect, add server cert to keystore programmatically
The key is:
KeyStore.Entry newEntry = new KeyStore.TrustedCertificateEntry(someCert);ks.setEntry("someAlias", newEntry, null);
I have used the below code to override the SSL checking in my project and it worked for me.
package com.beingjavaguys.testftp;import java.io.InputStreamReader;import java.io.Reader;import java.net.URL;import java.net.URLConnection;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import java.security.cert.X509Certificate;/** * Fix for Exception in thread "main" 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 */public class ConnectToHttpsUrl { public static void main(String[] args) throws Exception { /* Start of Fix */ TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); // Create all-trusting host name verifier HostnameVerifier allHostsValid = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }; // Install the all-trusting host verifier HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); /* End of the fix*/ URL url = new URL("https://nameofthesecuredurl.com"); URLConnection con = url.openConnection(); Reader reader = new InputStreamReader(con.getInputStream()); while (true) { int ch = reader.read(); if (ch == -1) break; System.out.print((char) ch); } }}
Set validateTLSCertificates
property to false
for your JSoup command.
Jsoup.connect("https://google.com/").validateTLSCertificates(false).get();