用java访问https时,有可能会出现不能访问的错误:
若是用4.1版本的HttpClient包,则会出现javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated的异常;
若是用4.5.8版本的HttpClient包,则会出现PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target的异常。
经测试有两种解决方法,分别是:
用keytool命令将SSL证书导入到密钥库;
直接绕过SSL认证;
如果做java GUI,第一种方法过于麻烦,这次详细记录网上的第二种方法:
public class SslUtil{
public static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {
SSLContext sc = SSLContext.getInstance("SSLv3");
// 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法
X509TrustManager trustManager = new X509TrustManager() {
@Override
public void checkClientTrusted(