这次会抽时间把HttpClient访问Https链接的内容大致分为三部分来写,第一部分是由于不安全的证书导致的集中问题解决;第二部分将会叙述怎么实现单向SSL验证;第三部分则会叙述如何实现Https的双向认证。
一般情况下,我们通过
HttpClient client = new DefaultHttpClient();
得到的HttpClient对象是可以直接发起Https的访问的,但是如果服务端的SSL证书是不可信的(可能是证书应用范围不对,也可能是自签名的证书),那么可能会有这些错误
javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
或者javax.net.ssl.SSLException: hostname in certificate didn't match:
这部分我们要解决的办法就是通过接受所有服务端证书
1 | /** |
EasySSLSocketFactory这个类很简单
1 | package com.ilovn.app.httpsdemo; |
调用的话也是很简单的
1 | HttpClient client = HttpClientUtil.getNewHttpClient(); |
这里主要就是接受了所有的SSL证书,在于安全来说,那还要SSL干嘛呢。下一篇我们就会来看如何实现客户端验证服务端的SSL证书。