2010-10-27 42 views
1

J'ai un petit problème de configuration du transport CXF dans Mule 2.2 pour appeler une méthode WS sur le service exposé, en utilisant HTTPS/SSL. Appeler la même méthode en utilisant HTTP simple fonctionne très bien. J'ai cherché beaucoup sur cette question et trouvé entre autres le lien suivant:Problème avec Mule cxf: point de terminaison sortant (client) et HTTPS/SSL

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

qui est utile, mais il y a encore quelques petites choses que je ne comprends pas bien:

  • Le point de terminaison CXF est configuré comme:, c'est-à-dire qu'il se trouve dans l'espace de noms cxf. Est-ce que l'espace de noms cxf a une relation avec l'espace de noms https pour configurer le comme décrit dans le lien? Ce qui est encore plus déroutant, c'est que les choses Mule sont quelque chose que j'ai pris en charge d'un développeur précédent et qu'il fonctionne sur SSL tel quel, mais dans les fichiers de configuration Mule, je ne trouve aucune trace d'un https: configuration du connecteur. De l'information dans le lien que j'ai eu l'impression qu'il est obligatoire, au moins le « serveur de stockage de clés » et le « magasin de confiance », comme:

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

Ce que je ne dans le journal Mule lorsque vous essayez de vous connecter au WS activé HTTPS est comme ci-dessous et il est clairement lié à la clé SSL, mais la dernière pièce me manque pour tout mettre en place. Toute aide et commentaires à ce sujet seraient grandement appréciés.

/Ola

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

Répondre

1

S'il n'y a pas Mule https: connecteur, il pourrait alors dire un service externe fait la partie SSL (comme un serveur JBoss). Je n'ai aucune expérience de faire cela moi-même cependant.

Mais si tout se fait par Mule, vous devez également définir les propriétés du client (comme expliqué dans le lien que vous avez mentionné):

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

Et pour récapituler les différents magasins clés (ce qui peut être source de confusion) :

  • clientKeyStore contient la clé de votre client (s)
  • serverKeyStore contient k de votre serveur ey (s)
  • trustStore contient les clés publiques de tous les pairs, dont les clés aux clients se connectant à votre serveur, les clés à tous les serveurs externes (comme les ws que vous essayez de vous connecter à)

Mais le message d'erreur que vous avez indique qu'il y a un mot de passe clé manquant. Cela ne devrait pas se produire si vous avez correctement configuré les magasins de clés et le connecteur https.