2015-12-24 97 views
0

我有两个应用服务器alpha和beta。两者都在同一主机上,都通过apache httpd与每个应用程序的虚拟主机进行访问。javax.net.ssl.SSLException:证书中的主机名与Apache httpd虚拟主机不匹配

https://alpha有一个合适的CN集证书和https://beta也是如此。每个DNS都是底层主机的CNAME条目。

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

Java keytool的命令:

keytool -printcert -sslserver beta

示出了同样的问题,返回用于α-证书。 InstallCert.java实用程序显示测试版的正确证书。

目前,我们认为最好的解决方案是用A记录替换CNAME记录,但是由于牵涉时间的缘故,我们已经完成了这项工作。任何建议都会(非常)欢迎。

回答

0

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

+0

我看了一下,看来使用的Apache HttpComponents版本是4.3.2之前的版本,其中添加了SNI支持。 JIRA问题讨论了我们所看到的确切问题!应该是一个简单的修复。谢谢吨Steffen! –