【问题标题】:Can't consume a SSL protected webservice with Java/Glassfish无法使用 Java/Glassfish 使用受 SSL 保护的 Web 服务
【发布时间】:2011-04-06 23:00:16
【问题描述】:

我正在尝试使用托管在 https 安全性下的 Web 服务。

我正在使用 Java 和 glassfish,但出现以下错误:

信息:HTTP 传输错误:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:找不到与 testdomain.com 匹配的名称

问题是这个特定的服务器用于测试,它使用的是生产证书(CN=domain.com 的那个)

我已经使用 keytool -importcert 将 domain.com 证书添加到我的 glassfish 域的 cacerts 密钥库中,但它不起作用。

我还尝试使用 CN=testdomain.com 创建一个自签名证书并将其添加到 cacerts 密钥库,但它也不起作用...

那么如何配置 Java/Glassfish 以使用此 Web 服务?

【问题讨论】:

    标签: java ssl service glassfish


    【解决方案1】:

    服务器证书的 CN 应与客户端连接的 URL 中的域匹配。如果仍然不起作用,我会检查 IP 是否也映射到该主机名(反向 DNS)。验证它的是客户。如果你想绕过这个主机名验证,请看我文章中的示例代码:http://jakubneubauer.wordpress.com/2011/09/06/java-webservice-over-ssl/

    原则是您将自己的 HostnameVerifier 提供给服务客户端代理。

    【讨论】:

      【解决方案2】:

      自签名证书需要安装在 Web 服务的密钥库连同它的私钥,并导入到 Glassfish 的信任库中。 p>

      【讨论】:

        【解决方案3】:

        自签名证书需要安装在您的 java 客户端的密钥库中。并且 testdomain.com 应该使用 dns 解析。

        【讨论】:

        • 客户端与它无关。在这种情况下,Glassfish 是客户端。您的第二条评论毫无意义:域通过 DNS 解析的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多