我们有一个使用 Mule Standalone 3.5 的应用程序(我知道...),需要强制它使用 TLS 1.1 或 1.2 进行 HTTPS。
我们已升级到最新的 Java 8 (8u112)。
我们修改了 mule 的 tls-default.conf 以包含以下内容:
enabledProtocols=SSLv2Hello,
TLSv1.1
TLSv1.2
我们的 HTTPS GET 请求导致异常:
No appropriate protocol (protocol is disabled or cipher suites are inappropriate) (javax.net.ssl.SSLHandshakeException)
有没有办法让 Mule 3.5 的 https 连接器将 TLS 1.1 或 1.2 用于 HTTPS?
我们的应用程序还使用了 Salesforce 连接器
<sfdc:...>
在我们的 Java 升级和配置更改后,使用 TLS 1.2 可以正常工作。请注意,Mule 3.5 仍然有一个单独的 HTTPS 连接器(不是 3.6 中引入的用于 HTTP/HTTPS 的组合连接器)。
我们希望避免升级到较新版本的 Mule,因为无论如何我们都打算在不久的将来取代我们对 Mule 的使用,而且我们对升级的调查表明这并不容易。
更新 :
除了在 Ryan Carter 的回答中使用修复之外,我还必须通过转义换行符来修复 tls-default.conf 中的错误:
enabledProtocols=SSLv2Hello, \
TLSv1.1 \
TLSv1.2
最佳答案
是的,Salesforce 连接器会自动使用 JDK 的默认 TLS 版本。
但是对于 https 连接器,您需要向 https 连接器添加一个属性:
<https:connector name="https">
<spring:property name="sslType" value="TLSv1.2"/>
</https:connector>
关于https - 在 Mule 3.5 中为 HTTPS 设置 TLS 1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40278083/