如何在Spring XD中禁用“defaultHostnameVerifier”属性

时间:2015-01-21 22:13:41

标签: https ssl-certificate spring-xd

当消息放在Q上时,我需要从我的处理器模块连接到https URL(假设这里的q名是:readFromQ)然后只记录来自url GET调用的响应。我正在使用http-client处理器在这里对URL进行GET调用。 我的信息流如下所示:

stream create --name hitSSL --definition“jms --destination = readFromQ | http-client --url ='''https://remoteHost:remotePort/trafficcontrol/''' --httpMethod = GET |日志“

现在的问题是,这个URL为spring-xd提供了一个与我想要命中的主机名不匹配的证书。证书的名称类似于abc.mycompany.com,而URL的主机名是remoteHost。

Spring XD抛出: java.security.cert.CertificateException:找不到匹配remoteHost的名称

我的cacerts确实添加了abc.mycompany.com证书。

我需要知道是否有一种方法可以在建立SSL连接时禁止SpringXD通过CN验证主机名。 有没有办法禁用java属性 javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier

注意:我可以使用“http”成功对上述网址进行GET

1 个答案:

答案 0 :(得分:0)

我能够覆盖主机名验证。感谢我的团队中的人们。

我将xd-admin和xd-container脚本更新为:

<强> DEFAULT_JVM_OPTS =&#34; -javaagent:/opt/spring-xd-1.1.0.M1/xd/lib/HostnameVerifier.jar

此HostnameVerifier.jar是一个javaagent,它覆盖setDefaultHostnameVerifier属性中的verify方法,如下所示:

HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier()
    {
      public boolean verify(String s, SSLSession sslSession)
      {
        return true;
      }
    }

现在SpringXD没有抱怨连接主机和证书不匹配的服务器名称。