Java笔记-解决SSLHandshakeException: No subject alternative names present

我这边是这样出现的问题,做了一个双向认证的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"));
}
 

本人在项目里面是这样操作的:

Java笔记-解决SSLHandshakeException: No subject alternative names present_第1张图片

你可能感兴趣的:(webservice,Java,http/https,java,SSL,webservice)