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后,问题解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
javax.net.ssl.SSLException: Unsupported or unrecognized SSL message是一个SSL异常,它表示在进行SSL握手时收到了不支持或无法识别的SSL消息。这可能是由于以下原因导致的: 1. 协议不匹配:客户端和服务器之间的SSL协议版本不匹配。可以尝试升级或降级SSL协议版本来解决此问题。 2. 代理问题:如果在客户端和服务器之间存在代理服务器,可能会导致SSL握手失败。可以尝试绕过代理服务器或配置代理服务器以支持SSL。 3. 证书问题:客户端或服务器的SSL证书可能无效或过期。可以尝试更新证书或使用有效的证书来解决此问题。 4. 密钥问题:客户端或服务器的SSL密钥可能无效或不匹配。可以尝试重新生成密钥或使用正确的密钥来解决此问题。 解决javax.net.ssl.SSLException: Unsupported or unrecognized SSL message的方法包括: 1. 检查SSL协议版本:确保客户端和服务器之间的SSL协议版本匹配。可以尝试升级或降级SSL协议版本来解决此问题。 2. 检查代理设置:如果存在代理服务器,请确保代理服务器正确配置以支持SSL。可以尝试绕过代理服务器或配置代理服务器以支持SSL。 3. 更新证书:检查客户端和服务器的SSL证书是否有效且未过期。如果证书无效或过期,可以尝试更新证书来解决此问题。 4. 重新生成密钥:如果SSL密钥无效或不匹配,可以尝试重新生成密钥或使用正确的密钥来解决此问题。 范例:<<引用:检查SSL协议版本是否匹配。[^1]。引用:检查代理设置是否正确。[^2]。引用:更新SSL证书。[^3]。引用:重新生成SSL密钥。[^4]。 以下是解决javax.net.ssl.SSLException: Unsupported or unrecognized SSL message的方法: 1. 检查SSL协议版本 - 确保客户端和服务器之间的SSL协议版本匹配。 - 可以尝试升级或降级SSL协议版本来解决此问题。 2. 检查代理设置 - 如果存在代理服务器,请确保代理服务器正确配置以支持SSL。 - 可以尝试绕过代理服务器或配置代理服务器以支持SSL。 3. 更新SSL证书[^3] - 检查客户端和服务器的SSL证书是否有效且未过期。 - 如果证书无效或过期,可以尝试更新证书来解决此问题。 4. 重新生成SSL密钥[^4] - 如果SSL密钥无效或不匹配,可以尝试重新生成密钥或使用正确的密钥来解决此问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值