从Mule Project调用安全的Web服务时出错

时间:2016-04-25 07:54:31

标签: mule esb

需要从我的一个Mule Project调用一个安全的Web服务。为此我创建了一个自签名证书并配置我的项目如下:

1)将keystore.jks保留在Project

的资源文件夹中

2)在Globals.xml文件中定义了一个https连接器

<https:connector name="movilcashHttpsConnector" doc:name="HTTP-HTTPS" clientSoTimeout="10000" cookieSpec="netscape" receiveBacklog="0" receiveBufferSize="0" sendBufferSize="0" serverSoTimeout="10000" socketSoLinger="0" validateConnections="true">
      <https:tls-key-store path="keystore.jks" keyPassword="changeit" storePassword="changeit" />
      <https:tls-server path="keystore.jks" storePassword="changeit" />
</https:connector> 

3)在调用https端点时,我使用了以下配置

    <https:outbound-endpoint method="POST"
        doc:name="HTTP" exchange-pattern="request-response" transformer-refs="Message_Properties2"
        responseTimeout="90000"
        address="https://partners.masmovilcash.com/TelepinWeb/TpinBulkLoading?BatchType=7&amp;FileExt=PNG&amp;FileAbbrv=C_R&amp;FileType=KYC_Documents&amp;CustomerID=#[flowVars['tpin-customerid']]&amp;FileSequence=2"
        connector-ref="movilcashHttpsConnector">
    </https:outbound-endpoint>

4)在运行mule standlaone的Linux服务器中部署项目。

但不幸的是,每次我收到以下错误: 消息:无法通过端点路由事件:DefaultOutboundEndpoint {endpointUri = https://partners.masmovilcash.com/TelepinWeb/JSON-RPC,connector = HttpsConnector

消息有效内容的类型为:PostMethod(org.mule.api.transport.DispatchException) sun.security.validator.ValidatorException:找不到可信证书             at sun.security.validator.SimpleValidator.buildTrustedChain(SimpleValidator.java:384)

我错过了什么吗?请帮帮忙。

1 个答案:

答案 0 :(得分:0)

由于您要对外部服务(https://partners.masmovilcash.com/TelepinWeb/JSON-RPC)执行HTTPS请求,因此您需要确保您的应用程序信任该服务证书。这意味着如果为HTTPS连接器设置信任存储,则表示信任存储需要包含服务证书。

考虑到我已经能够从浏览器访问您需要的服务,它可能由适当的证书颁发机构(CA)签名,这意味着默认的Java信任存储应该可以工作。这意味着,请尝试不设置任何信任存储/密钥存储数据,以便使用JVM默认值。类似的东西:

<https:connector name="movilcashHttpsConnector" doc:name="HTTP-HTTPS" clientSoTimeout="10000" cookieSpec="netscape" receiveBacklog="0" receiveBufferSize="0" sendBufferSize="0" serverSoTimeout="10000" socketSoLinger="0" validateConnections="true"/>