【问题标题】:WSO2 ESB Send mediator with client certificate credentialsWSO2 ESB 发送带有客户端证书凭据的中介
【发布时间】:2013-03-13 19:43:04
【问题描述】:

我们在 IIS 下有一个 WCF 服务,该服务由带有客户端证书的传输安全 (SSL) 保护(不是消息 WS-Security,而是由 IIS 本身)。 我已将证书添加到 wso2carbon.jks 每当执行发送调解器时,请求就会超时。 IIS 日志仅显示错误 500.0。 如果在 IIS 配置中我设置为忽略客户端证书,一切正常。 编码的 Java Axis2 和 .Net 客户端在 ISS 上打开证书时也能正常工作。

很可能我错过了通话中的某些内容。这种情况是否需要 WS-policy? 我将不胜感激。

【问题讨论】:

  • 附加信息 - 看起来是碳传输问题。检查wireshark所有传输都卡在Hello Request中的握手所以服务器向ESB发送Hello,并且通信卡住了。只有 CommonsHTTPTransportSender 能够完成与服务器的握手(尽管仍然没有发送证书) 那么 Carbon 中的 PassThrough 和 NIO http 传输会不会有问题?

标签: wso2 wso2esb


【解决方案1】:

终于找到了解决办法。

解决方案 在 IIS 上启用 SSLAlwaysNegoClientCert。这是一个好帖子:Make IIS require SSL client certificate during initial handshake

原因:如果客户端访问受保护的资源,IIS 默认会重新协商 SSL。 NIO 和 HttpPathThrough 传输不允许重新协商(这是有道理的,因为它是安全漏洞)。所以 IIS 没有得到 Client Hello 并发出错误 500(对 WSO2 的人来说,为什么 TryIt 客户端会挂起直到超时?)

备注:我们并非总是可以在 IIS 端进行更改,因此如果 WSO2 ESB 中可用的传输在允许重新协商方面更加灵活(可能我错过了配置它的位置...)会更好。

【讨论】:

  • 很高兴听到您找到了解决方法。但是您是否尝试使用以下附加参数启动 ESB, -Dsun.security.ssl.allowUnsafeRenegotiation=true (我在您指向我的 jira 中找到了它)。 Jira 说它不起作用。但只是想检查一下你是否尝试过。
  • 谢谢。此参数仅适用于 Core Http 传输,不影响 NIO 或直通。所以在这种情况下它没有帮助。
  • 我对此进行了进一步调查,发现问题仍然存在。 WSO2 ESB 团队意识到了这一点,这是他们正确修复的路线图。他们还建议使用 CallOut 调解器作为解决方法。
  • 对此有解决方案吗?我面临着完全相同的问题。
【解决方案2】:

在这种情况下,WSO2 ESB 充当客户端。因此,您需要将证书导入到 WSO2 ESB 的 repository/resources/security 文件夹中的 client-truststore.jks。那么你的服务调用应该可以工作了。

【讨论】:

  • 是的,它应该在 client-truststore.jks 中。您可以在 ESB 中启用 SSL debugginh 并查看 ESB 中的哪个点出了什么问题。有一些资源将解释如何启用 SSL 调试日志。
  • 从所有调试来看,问题似乎在于 PassThrough 和 NIO https 传输都不支持(错误?)SSL 重新协商。当客户端向受证书保护的资源发出请求时,服务器通过发送 Hello 请求请求重新协商。克林特没有回应,一切都被卡住了。核心 http 传输可以很好地完成重新协商。发现你打开的错误 wso2.org/jira/browse/CARBON-11041 似乎是相关的。你能解决问题吗?这对我们来说是一个真正的障碍,所以我非常感谢帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
相关资源
最近更新 更多