我正在尝试使用 https 安全托管的 Web 服务。
我正在使用 Java 和 glassfish,但出现以下错误:
信息:HTTP 传输错误:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:找不到与 testdomain.com 匹配的名称
问题是这个特定的服务器用于测试,它使用的是生产证书(CN=domain.com 的那个)
我已经使用 keytool -importcert 将 domain.com 证书添加到我的 glassfish 域的 cacerts keystore 中,但它没有用。
我还尝试使用 CN=testdomain.com 创建一个自签名证书并将其添加到 cacerts keystore ,但它也没有用...
那么我该如何配置 Java/Glassfish 来使用这个 Web 服务呢?
最佳答案
服务器证书的 CN 应与客户端连接的 URL 中的域匹配。如果仍然不起作用,我会检查 IP 是否也映射到该主机名(反向 DNS)。验证它的是客户。如果您想绕过此主机名验证,请参阅我文章中的示例代码:http://jakubneubauer.wordpress.com/2011/09/06/java-webservice-over-ssl/
原则是您将自己的 HostnameVerifier 提供给服务客户端代理。
关于java - 无法使用 Java/Glassfish 使用受 SSL 保护的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5573968/