我有两个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记录,但由于涉及的提前期已经完成了。任何建议都是(非常)欢迎。
答案 0 :(得分:0)
确保您使用的是支持Server Name Indication (SNI)的Apache HTTPClient版本。像Android上常用的旧版本不支持SNI。