javax.net.ssl.SSLException:证书中的主机名与Apache httpd虚拟主机不匹配

时间:2015-12-24 04:21:38

标签: java apache ssl httpclient

我有两个app服务器alpha和beta。两者都在同一主机上,两者都通过apache httpd与每个应用程序的虚拟主机访问。

https://alpha的证书具有正确的CN集,https://beta也有。每个DNS都是底层主机的CNAME条目。

我们的基于Apache HttpClient的客户端在访问https://beta时会抛出“javax.net.ssl.SSLException:证书中的主机名不匹配”异常,表明它获得的证书是针对alpha的。

java keytool命令:

keytool -printcert -sslserver beta

显示同样的问题,返回alpha证书。 InstallCert.java实用程序会显示正确的beta版证书。

目前,我们认为最好的解决方案是用A记录替换CNAME记录,但由于涉及的提前期已经完成了。任何建议都是(非常)欢迎。

1 个答案:

答案 0 :(得分:0)

确保您使用的是支持Server Name Indication (SNI)的Apache HTTPClient版本。像Android上常用的旧版本不支持SNI。