2011-04-06 51 views
1

我试图使用https安全托管的Webservice。无法使用Java/Glassfish使用SSL保护的webservice

我使用Java和GlassFish和我得到了以下错误:

信息:HTTP传输错误:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:没有名字匹配TESTDOMAIN .COM发现

的事情是,这个特定的服务器用于测试和它的使用生产许可证(带有CN = domain.com)

我已经添加了domain.com证书到我的GlassFish域cacerts keystore使用keytool -importcert并且它不起作用。

我也试图创建一个具有CN = testdomain.com自签名证书并将其添加到cacerts的密钥存储和它没有工作,要么...

那么,如何配置Java/Glassfish的消耗这个Web服务?

回答

-1

自签名证书需要安装在您的Java客户端的密钥存储区中。而testdomain.com应该使用dns来解析。

+0

客户端与它无关。在这种情况下,Glassfish是客户。您的第二条评论是毫无意义的:域*通过DNS解析。 – EJP 2011-04-07 05:12:59

0

自签名证书需要安装在Web服务的密钥存储区中,其中包含私钥,,并导入Glassfish的信任库

1

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

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