java掉用接口,报PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: u

来源:互联网 发布:linux nginx压力测试 编辑:程序博客网 时间:2024/05/29 17:54

原因:证书出问题了,服务器不信任我们自己创建的证书

解决办法 在代码中必须要忽略证书信任问题。只要在创建connection之前调用两个方法:


trustAllHttpsCertificates();HttpsURLConnection.setDefaultHostnameVerifier(hv);



HostnameVerifier hv = new HostnameVerifier() {    public boolean verify(String urlHostName, SSLSession session) {        System.out.println("Warning: URL Host: " + urlHostName + " vs. "                + session.getPeerHost());        return true;    }};private static void trustAllHttpsCertificates() throws Exception {    javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];    javax.net.ssl.TrustManager tm = new miTM();    trustAllCerts[0] = tm;    javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext            .getInstance("SSL");    sc.init(null, trustAllCerts, null);    javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc            .getSocketFactory());}static class miTM implements javax.net.ssl.TrustManager,        javax.net.ssl.X509TrustManager {    public java.security.cert.X509Certificate[] getAcceptedIssuers() {        return null;    }    public boolean isServerTrusted(            java.security.cert.X509Certificate[] certs) {        return true;    }    public boolean isClientTrusted(            java.security.cert.X509Certificate[] certs) {        return true;    }    public void checkServerTrusted(            java.security.cert.X509Certificate[] certs, String authType)            throws java.security.cert.CertificateException {        return;    }    public void checkClientTrusted(            java.security.cert.X509Certificate[] certs, String authType)            throws java.security.cert.CertificateException {        return;    }}

阅读全文
0 0
原创粉丝点击