我这边是这样出现的问题,做了一个双向认证的WebService,证书是用keytools做的自签名,其中cn为localhost。在外网测试的时候,客户端检测自己的证书不通过。百度没有找到决解的办法,最后去外网看了,用了洋人的方法解决的。在此记录下。
在自己的代码中,需要连接网络的地方添加如下静态函数:
static {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier()
{
public boolean verify(String hostname, SSLSession session)
{
// ip address of the service URL(like.23.28.244.244)
if (hostname.equals("23.28.244.244"))
return true;
return false;
}
});
}
如果是java8可以用下面的表现方式:
static {
HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> hostname.equals("127.0.0.1"));
}
本人在项目里面是这样操作的: