Java忽略证书验证
发布时间:2020-12-14 16:40:00 所属栏目:Java 来源:网络整理
导读:我正在尝试创建一些连接到自签名HTTPS服务器的示例 Java项目.我似乎无法让 Java停止尝试验证证书.我不想相信这个证书,我只想完全忽略所有证书验证;这个服务器在我的网络中,我希望能够运行一些测试应用程序而不必担心证书是否有效. java -Dcom.sun.net.ssl.ch
我正在尝试创建一些连接到自签名HTTPS服务器的示例
Java项目.我似乎无法让
Java停止尝试验证证书.我不想相信这个证书,我只想完全忽略所有证书验证;这个服务器在我的网络中,我希望能够运行一些测试应用程序而不必担心证书是否有效.
java -Dcom.sun.net.ssl.checkRevocation=false HelloWorld org.apache.axis2.AxisFault: Connection has been shutdown: 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 -Dcom.sun.net.ssl.checkRevocation = false没有帮助.我还尝试添加以下代码: public static void DisableCertificateValidation() { TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs,String authType) { } public void checkServerTrusted(X509Certificate[] certs,String authType) { } } }; try { SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null,trustAllCerts,new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } catch (Exception e) { } } 但仍然有同样的问题.这里发生了什么? 解决方法
org.apache.axis2.AxisFault表示您正在使用Axis 2,而Axis 2不使用HttpsURLConnection建立HTTP(S)连接,而是Apache HttpClient(据我所知3.x),因此HttpsURLConnection. setDefaultSSLSocketFactory(…)在那里没有任何效果.
您可以查看有关为Axis 2设置SSLContext的this answer,更具体地说,本文档:http://axis.apache.org/axis2/java/core/docs/http-transport.html#httpsupport (或者,您可以使用在Java 6中引入的SSLContext.setDefault(…)来设置默认SSLContext.在实际应用程序中,禁用证书验证对于默认SSL上下文显然不是一个好主意.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |