Exception : javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

DefaultHttpClient mHttpClient =  new DefaultHttpClient(new BasicHttpParams());
ClientConnectionManager ccm = mHttpClient.getConnectionManager();
SchemeRegistry sr = ccm.getSchemeRegistry();
SSLContext sslcontext = null;
try {
	sslcontext = SSLContext.getInstance("TLS");
	sslcontext.init(null, new TrustManager[]{}, null);
} catch (NoSuchAlgorithmException e) {
	e.printStackTrace();
}
SSLSocketFactory ssf = new SSLSocketFactory(sslcontext);
ssf.setHostnameVerifier(ALLOW_ALL_HOSTNAME_VERIFIER);
sr.register(new Scheme("https", ssf, 443)); 
PoolingClientConnectionManager pccm = new PoolingClientConnectionManager(sr);  
pccm.setDefaultMaxPerRoute(20); //每个主机的最大并行链接数   
pccm.setMaxTotal(100);          //客户端总并行链接最大数      
mHttpClient =  new DefaultHttpClient(pccm, mHttpClient.getParams());
mHttpClient.execute(new HttpGet("https://www.xxx.com"));

此代码在本地开发环境正常运行,但是在服务器上mHttpClient.execute会报错: 

Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

本地开发环境:myeclipse2014+jdk1.7,服务器运行环境jdk1.6+tomcat6

网上很多方案是重写SSLContext初始化参数,放宽ssl验证,如: http://www.cnblogs.com/metoy/p/6238061.html,但是都没有解决问题。

后来发现原来是本地jdk版本和服务器版本不一致的问题,参考链接:

 https://stackoverflow.com/questions/9578129/exception-javax-net-ssl-sslpeerunverifiedexception-peer-not-authenticated


升级服务器jdk到1.7后,问题解决。

发布了44 篇原创文章 · 获赞 28 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/hanzengyi/article/details/76021255
今日推荐