JVM忽略证书名称不匹配

问题描述:

我知道有很多关于如何忽略代码中的SSL错误的问题/答案。JVM忽略证书名称不匹配

在我们的开发区dev.domain.tld上,我们已经通过SSL配置了一个应用服务器。

显示的证书用于somedev.domain.tld

没有办法更改证书,它将永远是一个域不匹配。

所以当我部署一个web服务https://dev.domain.tld并尝试连接/调用我的web服务我得到一个异常:

造成的: java.security.cert.CertificateException: 没有名字匹配开发.domain.tld发现

我在我的信任存储中有somedev.domain.tld CERT。

现在,我看到了很多样本​​如何更改代码(使用信托经理接受所有域),但我怎么指定到JVM忽略域匹配连接到服务器时?有没有-Djavax.net.ssl论点或什么?

谢谢!

UPDATE:

或者,因为我使用Spring-WS,有没有办法设置一些属性在春天是什么? (WebServiceTemplate)

UPDATE

我想我得从春季安全使用做什么:http://static.springsource.org/spring-ws/sites/1.5/reference/html/security.html

这在我的一个客户端应用程序的工作对我来说,或许这也将为工作你如果你是(或者Spring是内部的)在任何地方使用HttpsURLConnection。

HostnameVerifier hv = new HostnameVerifier() { 
    public boolean verify(String urlHostName, SSLSession session) { 
    log.warning(String.format("Warning: URL Host: '%s' does not equal '%s'", urlHostName, session.getPeerHost())); 
    return true; 
    } 
}; 

HttpsURLConnection.setDefaultHostnameVerifier(hv); 

尽管它几乎没有SSL的最佳做法。最好的解决方案是使用与主机名匹配的证书。