URLConnection和Https的问题

用URLConnection获取一个Https站点的东西 老是抛出异常说证书认证不过 不过对服务迁移性的考虑 又不想导入证书到JRE里面(总不会说出现紧急情况 需要搬迁到其他服务器 louis vuitton bags 还要我记得去导入证书吧) 最奇怪的是 Windows下运行的好好的 没有什么异常 一去Linux就出错
最后没有办法 只有 强制绕过这个检查了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager; louis vuitton bags
 
public class TrustAnyTrustManager implements X509TrustManager {
	public void checkClientTrusted(X509Certificate[] chain, String authType)
			throws CertificateException {
	}louis vuitton bags
 
	public void checkServerTrusted(X509Certificate[] chain, String authType)
			throws CertificateException {
	}
 
	public X509Certificate[] getAcceptedIssuers() {
		return new X509Certificate[] {};
	}louis vuitton bags
}


1
2
3
4
5
6
7
8
9
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
 
public class TrustAnyHostnameVerifier implements HostnameVerifier {
	public boolean verify(String hostname, SSLSession session) {
		// 直接Pass
		return true;
louis vuitton bags	}
}


就是要检查的时候 让他直接返回true 通过验证就OK了

在建立连接的时候 还要设置一下这个管理器

1
2
3
4
5
6
7
8
9
SSLContext context = SSLContext.getInstance("SSL");
context.init(null,new TrustManager[] { new TrustAnyTrustManager() },
		new SecureRandom());
// 获取URL 进行连接
URL url = new URL(urlString);louis vuitton bags
connection = (HttpsURLConnection) url.openConnection();
connection.setSSLSocketFactory(context.getSocketFactory());
connection.setHostnameVerifier(new TrustAnyHostnameVerifier());
connection.connect();louis vuitton bags



再次运行 没有问题了
要用该做法 你就必须能承担舍弃了Https的代价咯 louis vuitton bags

纪录一下方法 路过的朋友有知道的也可以说一下 为什么偏偏就Linux有问题 很奇怪咯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值