2010-10-27 120 views
1

我在使用HTTPS/SSL配置Mule 2.2中的CXF傳輸來調用暴露的服務上的WS-method時存在一個小問題。使用普通HTTP調用相同的方法工作正常。我搜索在這個問題上有很多和他人之間找到了以下鏈接:Mule cxf:出站端點(客戶端)和HTTPS/SSL問題

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

這是有用的,但還是有幾件事情,我不完全理解:

  • CXF端點配置爲:,即它位於cxf名稱空間中。 cxf名稱空間與https名稱空間是否有關係,用於配置鏈接中描述的內容?

  • 更令人困惑的是,Mule的東西是我從之前的開發者手中接過來的,它應該是按照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如下所示時,它顯然與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

如果沒有騾子HTTPS:連接器,那麼它可能意味着外部服務是做SSL部分(如JBoss服務器)。儘管我自己沒有經驗。

但如果一切都通過騾子做,你還需要設置客戶端屬性(如你所提到的鏈接解釋):

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

而回顧一下不同的密鑰存儲(可能會造成混淆) :

  • clientKeyStore包含您的客戶端的密鑰(S)
  • serverKeyStore包含服務器爲其k EY(S)
  • 的trustStore包含了所有同行的公鑰,即鍵連接到服務器的客戶端,鍵任何外部服務器(如WS你試圖連接到)

但您收到的錯誤消息表明存在缺少密鑰密碼。如果您已正確設置密鑰存儲區和https連接器,則不會發生這種情況。