0

我希望有人可以帮助我解决这个问题。我正在使用以下内容:

  • 野蝇 9
  • jbossws-cxf-*-5.0.0.Final
  • cxf-core-3.0.5

我正在处理与 HTTPS 握手中与 SNI 相关的合作伙伴端点的集成问题。与另一个站点(此处)一起,我已经能够创建一个自定义 SSLSocketFactory 并将其设置为默认 SSLSocketFactory,但后来我遇到了 CXF 不使用默认 SSLSocketFactory(此处)的问题。有了这个,我还没有找到一种方法来通知 CXF 通过配置使用默认的 SSLSocketFactory。

通过调试,我能够将 TLSClientParameters 上的 httpsURLConnectionDefaultHostnameVerifier 设置为 true,并确认这可以解决问题。我还看到一些帖子暗示这个值可以通过配置文件(JBoss WS 配置或 CXF 配置)或作为启动参数来设置,但我还没有找到一种方法来做到这一点。

有没有其他人能够做到这一点,如果可以,你能分享一下吗?

4

1 回答 1

0

所以我能找到这个特定问题的唯一答案是相当蛮力/丑陋,但这里希望它可以在以后为某人节省一些痛苦。

  1. 我创建了一个自定义 SSLSocketFactory 并将其设置为启动时的默认值。
  2. 该工厂将返回一个自定义连接实现,该实现扩展 CXF 扩展 SOAPConnectionImpl,它将在 TLSClientParameters 上将 setUseHttpsURLConnectionDefaultSslSocketFactory 设置为 true。
  3. 这是在 URLConnectionHTTPConduit 上依次设置的
  4. 最后我不得不使用一个 ThreadLocal 类来保存自定义 SSLSocketFactory 使用的主机名
于 2019-09-06T11:55:31.207 回答