我正在尝试使用https安全下托管的Web服务。
我正在使用Java和glassfish,我收到以下错误:
INFO: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服务呢?
答案 0 :(得分:1)
服务器证书的CN应与客户端连接的URL中的域匹配。如果仍然不起作用,我会检查IP是否也映射到此主机名(反向DNS)。验证它的是客户端。如果您想绕过此主机名验证,请参阅我的文章中的示例代码:http://jakubneubauer.wordpress.com/2011/09/06/java-webservice-over-ssl/
原则是您将自己的HostnameVerifier提供给服务客户端代理。
答案 1 :(得分:0)
自签名证书需要安装在Web服务的密钥库中,及其私钥,并导入Glassfish的信任库。
答案 2 :(得分:-1)
自签名证书需要安装在java客户端的密钥存储区中。和testdomain.com应该使用dns解决。