当消息放在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
答案 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没有抱怨连接主机和证书不匹配的服务器名称。