javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building f

1、问题发生背景:HttpClient4.5.6获取https链接时报的错。

2、问题分析:大概好像是说没有通过证书验证,具体就是跟证书有关系,再详尽一点也没有研究。

3、解决方法:

//采用绕过验证的方式处理https请求
 SSLContext sslcontext = null;
 try {
//主要是通过该方法createIgnoreVerifySSL
     sslcontext = createIgnoreVerifySSL();
 } catch (NoSuchAlgorithmException e) {
     e.printStackTrace();
 } catch (KeyManagementException e) {
     e.printStackTrace();
 }

 //设置协议http和https对应的处理socket链接工厂的对象
 Registry socketFactoryRegistry = RegistryBuilder.create()
         .register("http", PlainConnectionSocketFactory.INSTANCE)
         .register("https", new SSLConnectionSocketFactory(sslcontext))
         .build();
 PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
 HttpClients.custom().setConnectionManager(connManager);

 CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(connManager).build();

createIgnoreVerifySSL:

/**
 * 绕过验证
 *
 * @return
 * @throws NoSuchAlgorithmException
 * @throws KeyManagementException
 */
public static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {
    SSLContext sc = SSLContext.getInstance("SSLv3");

    // 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法
    X509TrustManager trustManager = new X509TrustManager() {
        @Override
        public void checkClientTrusted(
                java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
                String paramString) throws CertificateException {
        }

        @Override
        public void checkServerTrusted(
                java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
                String paramString) throws CertificateException {
        }

        @Override
        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
            return null;
        }
    };

    sc.init(null, new TrustManager[] { trustManager }, null);
    return sc;
}

 

最后感谢:https://blog.csdn.net/hu9645313573/article/details/75649741

亲测能用

你可能感兴趣的:(异常分析,https,证书)