【问题标题】:javax.net.ssl.SSLException: hostname in certificate didn't match in conjunction with Apache httpd virtual hostsjavax.net.ssl.SSLException:证书中的主机名与 Apache httpd 虚拟主机不匹配
【发布时间】:2015-12-24 04:21:37
【问题描述】:

我有两个应用服务器 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 证书。

目前,我们认为最好的解决方案是将 CNAME 记录替换为 A 记录,但由于涉及的提前期,尚未这样做。任何建议都会(非常)受欢迎。

【问题讨论】:

    标签: java apache ssl httpclient


    【解决方案1】:

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

    【讨论】:

    • 我查看了它,似乎正在使用的 Apache HttpComponents 版本是 4.3.2 之前的版本,其中添加了 SN​​I 支持。 JIRA 问题讨论了我们所看到的确切问题!应该很容易解决。非常感谢史蒂芬!!!
    猜你喜欢
    • 1970-01-01
    • 2016-08-09
    • 2013-01-27
    • 1970-01-01
    • 2014-11-29
    • 2021-08-20
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多