我有两个应用服务器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记录,但是由于牵涉时间的缘故,我们已经完成了这项工作。任何建议都会(非常)欢迎。
我看了一下,看来使用的Apache HttpComponents版本是4.3.2之前的版本,其中添加了SNI支持。 JIRA问题讨论了我们所看到的确切问题!应该是一个简单的修复。谢谢吨Steffen! –