【问题标题】:Hostname in certificate didn't match on wildcard cert证书中的主机名与通配符证书不匹配
【发布时间】:2014-03-28 19:57:58
【问题描述】:

这可能是 apache/服务器配置,也可能需要 Java 解决方案。在我的服务器上,我有几个子域。我在所有子域上强制使用 https,并且我有一个用于所有子域的通配符 ssl 证书。

当我转到 https://myapp1.myvendor.com 并在浏览器中查看证书时,我看到以下通用名称:

CN = *.myvendor.com

我还有一个 Java 程序,可以发布到 https://myapp1.myvendor.com/post.php,但是当我使用 Java 从 Java 发布时:

org.apache.http.client.methods.HttpPost httpPost = new HttpPost("https://myapp1.myvendor.com/post.php");
HttpResponse response = httpClient.execute(httpPost);

我收到以下错误:

javax.net.ssl.SSLException: hostname in certificate didn't match: 
<myapp1.myvendor.com> != <myvendor.com> OR <myvendor.com> OR <www.myvendor.com>

让我感到奇怪的是,它试图匹配 myvendor.com 或 www.myvendor.com 而不是 *.myvendor.com。我确实为 myvendor.com 安装了证书,但我停止使用它以支持通配符证书。

有什么建议吗?您需要更多信息吗?

Apache 配置:

<VirtualHost *:443>
 SSLEngine On
 SSLCertificateFile /etc/pki/tls/certs/27c7d7842bf94d.crt
 SSLCertificateKeyFile /etc/pki/tls/private/mydomain.key
 SSLCACertificateFile /etc/pki/tls/certs/my_cert.crt

 ServerName myapp1.myvendor.com
 DocumentRoot /var/www/myvendor/myapp1/src/
 ErrorLog /var/www/logs/myapp1/error.log
 CustomLog /var/www/logs/myapp1/access.log combined
 <Directory /var/www/myvendor/myapp1/src/>
         AllowOverride All
 </Directory>
</VirtualHost>

我还在加载的另一个配置文件中找到了这个:

<VirtualHost _default_:443>
 SSLCertificateFile /etc/pki/tls/certs/local.crt
 SSLCertificateKeyFile /etc/pki/tls/private/local.key
 SSLCACertificateFile /etc/pki/tls/certs/my_local_cert.crt
</VirtualHost>

我认为它正在获得这个证书,因为这个证书有:

subject Alternative name:
 DNS Name=myvendor.com
 DNS Name=www.myvendor.com

匹配来自 Java 的错误。如果是这种情况,我的问题是为什么 Java 获得此证书而不是浏览器获得的证书?

【问题讨论】:

  • 95% 你的 myapp1.myvendor.com 指向你不期望的服务器。 IE。您的代理设置/主机文件使域指向其他地方...或者 myapp1.myvendor.com 配置为使用与您预期不同的证书。
  • 或者您的服务器执行 SNI,而 Java 没有为其提供选择正确证书所需的信息。
  • @AlexeiLevenkov 查看我的编辑。我的编辑有意义吗?

标签: java apache ssl


【解决方案1】:

看起来您正在使用 SNI,例如具有不同证书的同一 IP 上的多个 https 服务器。在这种情况下,请查看Server Name Indication (SNI) on Java 如何在 Java 中使用 SNI。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-27
    • 2018-06-18
    • 1970-01-01
    • 2013-10-18
    • 2016-08-09
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多