javax.net.ssl.SSLException:证书中的主机名没有';t与Apache httpd虚拟主机配合使用

javax.net.ssl.SSLException:证书中的主机名没有';t与Apache httpd虚拟主机配合使用,java,apache,ssl,httpclient,Java,Apache,Ssl,Httpclient,我有两个应用服务器alpha和beta。两者都在同一台主机上,都通过apache httpd访问,每个应用都有虚拟主机 https://alpha拥有具有正确CN集的证书,并且https://beta也可以。每个主机的DNS都是基础主机的CNAME条目 我们基于Apache HttpClient的客户端在访问https://beta表示它获得的证书是针对alpha的 java keytool命令: keytool-printcert-sslserver测试版 显示相同的问题,返回alpha的证书

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

https://alpha
拥有具有正确CN集的证书,并且
https://beta
也可以。每个主机的DNS都是基础主机的CNAME条目

我们基于Apache HttpClient的客户端在访问
https://beta
表示它获得的证书是针对alpha的

java keytool命令:

keytool-printcert-sslserver测试版

显示相同的问题,返回alpha的证书。该实用程序显示测试版的正确证书


目前,我们认为最好的解决方案是用A记录替换CNAME记录,但由于所涉及的交付周期,目前还没有这样做。欢迎提出任何建议。

请确保您使用的是支持的Apache HTTPClient版本。Android上经常使用的旧版本不支持SNI。

我调查了一下,发现使用中的Apache HttpComponents版本是在添加了SNI支持的4.3.2之前的版本。本期的JIRA讨论的正是我们所看到的问题!这应该是一个容易解决的问题。非常感谢Steffen!!!