我有一个 Apache 映射到两个外部 DN:
sub1.dn.com
sub2.dn.com
两者都映射到同一个IP。
每个都有自己的 SSL 证书。每个证书按原样显示 CN 和 SAN 并匹配(即 sub1.dn.com 对应 sub1,sub2 相同)。
但是,当我的 Java 代码尝试连接到sub2.dn.com 时,它会失败,并显示:javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching sub2.dn。 com发现。
启用 Java SSL 调试输出显示了一些奇怪的东西 - 似乎 Java 下载并使用了另一个 (sub1) 证书!
[3]: ObjectId: 2.5.29.17 Criticality=false
SubjectAlternativeName [
DNSName: **sub1.dn.com**
]
因此,浏览器似乎很高兴,并获得了正确的证书。但是 Java 总是看到 sub1.dn.com 证书,而不是另一个。所以当 sub2 被调用时它显然不匹配。
任何想法为什么Java会这样做?也许如何解决它!谢谢