如何在 SpringXD 中禁用 "defaultHostnameVerifier" 属性
How to disable "defaultHostnameVerifier" property in SpringXD
我需要在 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/'''
--http方法=获取 |日志
现在的问题是 URL 向 spring-xd 提供的证书与我尝试访问的主机名不匹配。证书的名称类似于 abc.mycompany.com,而 URL 的主机名是 remoteHost。
Spring XD 抛出:
java.security.cert.CertificateException: 找不到与 remoteHost 匹配的名称。
我的 cacerts 确实添加了 abc.mycompany.com 证书。
我想知道是否有一种方法可以禁止 SpringXD 在建立 SSL 连接时使用 CN 验证主机名。
有没有办法禁用 java 属性 javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier
注意:我可以使用 "http"
在上面的 URL 上成功执行 GET
我能够覆盖主机名验证。感谢我团队中的人们。
我将 xd-admin 和 xd-container 脚本更新为:
DEFAULT_JVM_OPTS="-javaagent:/opt/spring-xd-1.1.0.M1/xd/lib/HostnameVerifier.jar
这个 HostnameVerifier.jar 是一个 javaagent,它覆盖了 setDefaultHostnameVerifier 属性 中的验证方法,如下所示:
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier()
{
public boolean verify(String s, SSLSession sslSession)
{
return true;
}
}
现在 SpringXD 不会抱怨连接到的主机和证书中的服务器名称不匹配。
我需要在 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/''' --http方法=获取 |日志
现在的问题是 URL 向 spring-xd 提供的证书与我尝试访问的主机名不匹配。证书的名称类似于 abc.mycompany.com,而 URL 的主机名是 remoteHost。
Spring XD 抛出: java.security.cert.CertificateException: 找不到与 remoteHost 匹配的名称。
我的 cacerts 确实添加了 abc.mycompany.com 证书。
我想知道是否有一种方法可以禁止 SpringXD 在建立 SSL 连接时使用 CN 验证主机名。 有没有办法禁用 java 属性 javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier
注意:我可以使用 "http"
在上面的 URL 上成功执行 GET我能够覆盖主机名验证。感谢我团队中的人们。
我将 xd-admin 和 xd-container 脚本更新为:
DEFAULT_JVM_OPTS="-javaagent:/opt/spring-xd-1.1.0.M1/xd/lib/HostnameVerifier.jar
这个 HostnameVerifier.jar 是一个 javaagent,它覆盖了 setDefaultHostnameVerifier 属性 中的验证方法,如下所示:
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier()
{
public boolean verify(String s, SSLSession sslSession)
{
return true;
}
}
现在 SpringXD 不会抱怨连接到的主机和证书中的服务器名称不匹配。