SSL handshake problème dans webservice avec Java et Tomcat

Je dois consommer un webservice fait dans l'Axe de mon application web Java (qui s'exécute sur le serveur Tomcat). La société qui a fait le service web utilise le protocole HTTPS et un certificat auto-signé pour le test.

J'ai couru un Netbeans wizzard pour générer un Service web basé sur le WSDL, et c'est fait correctement. Si je rentre dans le site web du service web à l'aide d'un navigateur, j'obtiens un message d'avertissement en raison de la certificat SSL, et j'ai créer une exception.

Lors de l'exécution de mon code, je reçois des exceptions lorsque la connexion SSL est faite. Les exceptions sont:

1.

com.soleil.xml.ws.client.ClientTransportException: HTTP erreur de transport: javax.net.le protocole ssl.SSLHandshakeException: Reçu alerte fatale: handshake_failure

et quelques fois (sans changer le code)

2.

com.soleil.xml.ws.client.ClientTransportException: HTTP erreur de transport: javax.net.le protocole ssl.SSLHandshakeException: le soleil.de sécurité.programme de validation.ValidatorException: PKIX chemin d'accès du bâtiment a échoué: le soleil.de sécurité.fournisseur de.certpath.SunCertPathBuilderException: impossible de trouver le chemin de certification valide pour demandé cible

J'imagine que je dois intégrer un certificat dans la machine virtuelle Java et/ou Tomcat, et aussi dit ignorer qui n'est pas une source fiable.

Comment faire? Comment consommer de cette webservice correctement?

Si les renseignements que je fournis ne suffit pas, veuillez en demander plus.

Grâce

Ezequiel

Mise à JOUR:

J'ai essayé deux choses, à la fois, sans succès, les exceptions sont les mêmes.

Option 1)

System.setProperty("javax.net.ssl.trustStore","/home/serverapp/BSS-cert.p12");
System.setProperty("javax.net.ssl.trustStorePassword","password");
System.setProperty("javax.net.ssl.trustStoreType","PKCS12");

Option 2)
Fichier de clés ks = fichier de clés.getInstance( "pkcs12" );
ks.load( new FileInputStream("/home/serverapp/SEV-cert.p12"), "mot de passe".toCharArray() );

    KeyStore jks = KeyStore.getInstance( "JKS" );
    jks.load( null );


    KeyManagerFactory kmf = KeyManagerFactory.getInstance( "SunX509" );
    kmf.init( ks, "f0p6k9n2".toCharArray() );

    TrustManagerFactory tmf = TrustManagerFactory.getInstance( "SunX509" );
    tmf.init( jks );

    SSLContext ctx = SSLContext.getInstance( "TLS" );
    ctx.init( kmf.getKeyManagers(), tmf.getTrustManagers(), null );

Aussi, que j'ai pensé que peut être le problème était le service web, j'ai essayé d'instituer une connexion HTTPS, et il ne fonctionne pas avec le même message d'erreur lors de l'ouverture d'un flux d'entrée.

   String httpsURL = "https://serverurl:443/theservice?wsdl";
   URL myurl = new URL(httpsURL);
   HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection();
   InputStream ins = con.getInputStream();   //Exception here!
   InputStreamReader isr = new InputStreamReader(ins);
   BufferedReader in = new BufferedReader(isr);
InformationsquelleAutor Ezequiel | 2011-02-16