Mule cxf问题:出站端点(客户端)和HTTPS / SSL

时间:2010-10-27 17:13:18

标签: ssl https cxf mule

我在Mule 2.2中配置CXF传输时遇到一个小问题,即使用HTTPS / SSL调用暴露的服务上的WS方法。使用普通HTTP调用相同的方法可以正常工作。我在这个问题上搜索了很多,并在以下链接中找到了以下链接:

http://www.mulesoft.org/documentation/display/MULE2CB/Using+HTTPS+with+CXF

这很有帮助,但仍有一些我不太了解的事情:

  • CXF端点配置如下:,即它位于cxf命名空间中。 cxf命名空间是否与https命名空间有任何关系,用于配置链接中描述的内容?

  • 更令人困惑的是,骡子的东西是我从以前的开发人员手中接过的东西,据说它原样通过SSL工作但是在Mule配置文件中我找不到任何https的痕迹:连接器配置。从链接中的信息我得到的印象是它是强制性的,至少是“服务器密钥存储”和“信任存储”,如:

    <https:connector name="myHttpsConnector">
        <https:tls-key-store path="serverKeystore" keyPassword="mulepassword"
             storePassword="mulepassword"/>
        <https:tls-server path="trustStore" storePassword="mulepassword"/>
    </https:connector>
    

当我尝试连接到启用HTTPS的WS时,我在Mule日志中得到的内容如下所示,它与SSL密钥明显相关,但我错过了最后一篇文章以使其全部落实到位。对此事的任何帮助和评论都会受到很大的关注。

/奥拉

********************************************************************************
Message               : Failed to invoke lifecycle phase "initialise" on object:
HttpsConnector{this=a7769e, started=false, initialised=false,
name='connector.https.0', disposed=false, numberOfConcurrentTransactedReceivers=4,
createMultipleTransactedReceivers=true, connected=false, supportedProtocols=[https],
serviceOverrides=null}
Type                  : org.mule.api.lifecycle.LifecycleException
Code                  : MULE_ERROR-70228
JavaDoc               : http://www.mulesource.org/docs/site/current2/apidocs/org/mule/api/lifecycle/LifecycleException.html
********************************************************************************
Exception stack is:
1. The Key password cannot be null (java.lang.IllegalArgumentException)
org.mule.api.security.tls.TlsConfiguration:290 (null)
2. Failed to invoke lifecycle phase "initialise" on object: 
HttpsConnector{this=a7769e, started=false, initialised=false, 
name='connector.https.0', disposed=false, numberOfConcurrentTransactedReceivers=4, 
createMultipleTransactedReceivers=true, connected=false, supportedProtocols=[https], 
serviceOverrides=null} (org.mule.api.lifecycle.LifecycleException)
org.mule.lifecycle.DefaultLifecyclePhase:277 (http://www.mulesource.org/docs/site
/current2/apidocs/org/mule/api/lifecycle/LifecycleException.html)
********************************************************************************
Root Exception stack trace:
java.lang.IllegalArgumentException: The Key password cannot be null
    at
org.mule.api.security.tls.TlsConfiguration.assertNotNull(TlsConfiguration.java:290)
at org.mule.api.security.tls.TlsConfiguration.validate(TlsConfiguration.java:208)
...
..

1 个答案:

答案 0 :(得分:1)

如果没有Mule https:连接器,则可能意味着外部服务正在执行SSL部分(如JBoss服务器)。我自己也没有经验。

但如果一切都是通过Mule完成的,您还需要设置客户端属性(如您提到的链接中所述):

<https:tls-client path="clientKeystore" storePassword="mulepassword" />

回顾各种钥匙店(这可能令人困惑):

  • clientKeyStore 包含您客户的密钥
  • serverKeyStore 包含服务器的密钥
  • trustStore 包含所有对等方的公钥,即连接到服务器的客户端的密钥,任何外部服务器的密钥(例如您尝试连接的用户)

但是您收到的错误消息表明缺少密钥密码。如果您已正确设置密钥存储区和https连接器,则不应该发生这种情况。