2010-08-26 9 views
4

J'ai écrit une application qui se connecte à un service Web SSL (y compris un certificat client) via jaxws. Pour que cela fonctionne, j'ai un wstrust.jks qui contient le certificat racine de confiance pour ws, et client.p12 qui est le certificat client à utiliser lors de la connexion à ws. J'ai ensuite créé une SSLSocketFactory personnalisée pour pouvoir utiliser mes wstrust.jks et client.12 lors de la connexion à ws. Je dis à jaxws d'utiliser ma mise en œuvre par:SSL Problème de connexion au service Web depuis le bean Java

[javax.xml.ws.BindingProvider] .getRequestContext(). Put (JAXWSProperties.SSL_SOCKET_FACTORY, customSSLSocketFactory);

Tout fonctionne comme un charme si je le lance en tant qu'application java autonome. Cependant quand j'utilise la même technique dans un bean Java (JSF) déployé comme un fichier de guerre fonctionnant sous Tomcat, je reçois un -erreur "PKIX path construction failed". MAIS Si je configure SSL via JAVA_OPTS lorsque je démarre mon Tomcat (via les paramètres -Djavax.net.ssl. *), Je le fais fonctionner.

Ma question:

Comment puis-je (ou est-il possible) pour obtenir ma-SSLSocketFactory-technique personnalisé pour travailler à l'intérieur du bean Java?

Je suppose que tomcat s'enroule autour de mon application, lors de l'exécution comme un haricot, il travaille différemment et mon souhait d'utiliser un isnt SSLSocketFactory personnalisé respecté ...

Merci pour toute entrée sur ce!

/Tobbe

Répondre

2

Résolu. Si quelqu'un a le même problème, voici comment. Au lieu de définir ma fabrique personnalisée à travers:

[javax.xml.ws.BindingProvider] .getRequestContext(). Put (JAXWSProperties.SSL_SOCKET_FACTORY, customSSLSocketFactory);

je dû le mettre par:

HttpsURLConnection.setDefaultSSLSocketFactory (customSSLSocketFactory);

sinon il semble être ignoré.

/Tobbe