1

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

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

这很有帮助,但仍有一些我不完全理解的事情:

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

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

    <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)
...
..
4

1 回答 1

1

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

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

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

并回顾一下各种关键存储(可能会令人困惑):

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

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

于 2011-03-23T22:44:19.767 回答