我正在使用一种仅通过TLSv1.2协议建立连接的服务。 在SoapUI中 -Dsoapui.https.protocols = TLSv1.2: - 此参数工作正常,能够从SOAP UI工具中获取服务的响应。
在mule ESB流程上需要类似上面参数的内容,这允许我的请求在代理期间明确使用TLSv1.2协议。
我正在使用Mule 3.7 CE& JDK 7.消息流使用CXF代理(cxf:proxy-service)将基于SOAP的请求通过Https引导到最终客户端。当请求发送给Mule时,它会抛出异常,如下所示。
Caused by: org.apache.cxf.ws.policy.PolicyException: These policy alternatives can not be satisfied: {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}TransportBinding: TLS is not enabled {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}HttpsToken {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}TransportToken at org.apache.cxf.ws.policy.AssertionInfoMap.checkEffectivePolicy(AssertionInfoMap.java:179) ~[cxf-rt-ws-policy-2.7.15.jar:2.7.15]
已经尝试通过tls-default.conf文件启用协议,同时添加系统参数和服务器参数也不起作用。
以下是使用安全策略的wsdl片段 -
<wsp:Policy wsu:Id="XYSPolicyID">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false" />
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
任何帮助都将非常感谢!!
答案 0 :(得分:0)
您可以配置您的加密协议和密码套件我是MULE_HOME / tls-default.conf
答案 1 :(得分:0)
如前一回复所述,-M-Djavax.net.debug=ssl:handshake:verbose
应该可以解决问题。
如果您仍然遇到问题,可以使用以下方法进行问题排查:
使用以下标志{{1}}
启动Mule通过这种方式,您将能够看到实际的握手过程。
另一个有用的工具是TestSSLServer,用于确定目标系统支持的协议和密码套件。
另外,您可以考虑安装Java Cryptography Extension软件包。
HTH,Nahuel。