在 WildFly/CXF Web 服务客户端中使用 DefaultSSLSocketFactory
Use DefaultSSLSocketFactory in WildFly/CXF Webservice client
我希望有人能帮我解决这个问题。我正在使用以下内容:
- 野蝇 9
- jbossws-cxf-*-5.0.0.Final
- cxf-core-3.0.5
我正在处理与 HTTPS 握手中与 SNI 相关的合作伙伴端点的集成问题。跟随另一个站点 (here) I have been able to create a custom SSLSocketFactory and set that as the default SSLSocketFactory, but then I ran into the issue where CXF does not use the default SSLSocketFactory(here)。因此,我还没有找到一种方法来通知 CXF 通过配置使用默认的 SSLSocketFactory。
通过调试,我能够将 TLSClientParameters 上的 httpsURLConnectionDefaultHostnameVerifier 设置为 true,并确认这可以解决问题。我还看到许多帖子暗示可以通过配置文件(JBoss WS config 或 CXF config)或作为启动参数来设置此值,但我一直无法找到一种方法这个。
有没有其他人能够做到这一点,如果可以,您能分享一下怎么做吗?
因此,对于这个特定问题,我能找到的唯一答案是非常粗暴的 force/ugly,但希望它可以在以后减轻一些人的痛苦。
- 我创建了一个自定义 SSLSocketFactory 并将其设置为默认值
启动。
- 这个工厂将return一个自定义连接
扩展 CXF 的实现扩展了 SOAPConnectionImpl
这会将 setUseHttpsURLConnectionDefaultSslSocketFactory 设置为
在 TLSClientParameters 上为真。
- 这个是在URLConnectionHTTPConduit上依次设置的
- 最后我不得不使用 ThreadLocal class 来保存自定义 SSLSocketFactory
使用的主机名
我希望有人能帮我解决这个问题。我正在使用以下内容:
- 野蝇 9
- jbossws-cxf-*-5.0.0.Final
- cxf-core-3.0.5
我正在处理与 HTTPS 握手中与 SNI 相关的合作伙伴端点的集成问题。跟随另一个站点 (here) I have been able to create a custom SSLSocketFactory and set that as the default SSLSocketFactory, but then I ran into the issue where CXF does not use the default SSLSocketFactory(here)。因此,我还没有找到一种方法来通知 CXF 通过配置使用默认的 SSLSocketFactory。
通过调试,我能够将 TLSClientParameters 上的 httpsURLConnectionDefaultHostnameVerifier 设置为 true,并确认这可以解决问题。我还看到许多帖子暗示可以通过配置文件(JBoss WS config 或 CXF config)或作为启动参数来设置此值,但我一直无法找到一种方法这个。
有没有其他人能够做到这一点,如果可以,您能分享一下怎么做吗?
因此,对于这个特定问题,我能找到的唯一答案是非常粗暴的 force/ugly,但希望它可以在以后减轻一些人的痛苦。
- 我创建了一个自定义 SSLSocketFactory 并将其设置为默认值 启动。
- 这个工厂将return一个自定义连接 扩展 CXF 的实现扩展了 SOAPConnectionImpl 这会将 setUseHttpsURLConnectionDefaultSslSocketFactory 设置为 在 TLSClientParameters 上为真。
- 这个是在URLConnectionHTTPConduit上依次设置的
- 最后我不得不使用 ThreadLocal class 来保存自定义 SSLSocketFactory 使用的主机名