绕开HttpClient里的SSLPeerUnverifiedException: peer not authenticated异常

最近客户抱怨我们的cobrowsing服务无法访问他们的服务器,查看日志发现以下异常:

最初根据搜索结果得知是我们用的HttpClient客户端不认可服务器的SSL证书导致,于是用了网上的办法来绕过服务器证书检查:

但是依然报错,后来研究得知,这个问题不是在服务器端证书的检查,而在客户端证书检查,然后我试着给了一个证书,但是依然报错。没办法只好根据调用站定位到org.apache.http.conn.ssl.SSLSocketFactory.createSocket里,派生该类,重新实现createSocket,然后不执行verify方法,经过测试就没有出现这个问题了:

这个因为绕过了双向的证书检查,会带来潜在的不安全性比如中间人攻击,但是考虑到cobrowsing本身对安全性要求并不太高,也就算了。


Last modified on 2014-03-12