在点击SOAP Web服务请求时,在Mule ESB中启用TLSv1.2协议

时间:2016-03-25 06:00:00

标签: mule tls1.2 anypoint-studio

我正在使用一种仅通过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>

任何帮助都将非常感谢!!

2 个答案:

答案 0 :(得分:0)

您可以配置您的加密协议和密码套件我是MULE_HOME / tls-default.conf

答案 1 :(得分:0)

如前一回复所述,-M-Djavax.net.debug=ssl:handshake:verbose应该可以解决问题。

如果您仍然遇到问题,可以使用以下方法进行问题排查:

使用以下标志{{1}}

启动Mule

通过这种方式,您将能够看到实际的握手过程。

另一个有用的工具是TestSSLServer,用于确定目标系统支持的协议和密码套件。

另外,您可以考虑安装Java Cryptography Extension软件包。

HTH,Nahuel。