[JAVA] Communication SSL entre webservice et client

Communication SSL entre webservice et client [JAVA] - Java - Programmation

Marsh Posté le 21-05-2007 à 09:46:00    

Bonjour,

 

Je vous expose mon problème :
Je dois me connecter à un webservice protégé via SSL + Authentification BASIC.

 

Ce client m'a transmit 3 fichiers qui apparemment vont me servir à me connecter via SSL (les certificats apparemment) :
monfichier-cert.pem
monfichier-issuer.pem
monfichier-key.pem

 

Voici le code que j'utilise dans mon programme java pour me connecter à ce webservice :

 
Code :
  1. //Valider votre certificat serveur comme sûr
  2.    System.setProperty("javax.net.ssl.trustStore", "chemin du fichier .keystore" );
  3. System.setProperty("javax.net.ssl.trustStorePassword", "mot_de_passe_du_keystore" );
  4.    //Recherche du web service
  5.    MONWSServiceLocator theWS = new ServiceETLServiceLocator();
  6.    theWS.setSIETLEndpointAddress("http://AdresseWeb.com/deMonWS/monWS" );
  7.    MONWSSoapBindingStub monSrv = (MONWSSoapBindingStub) theWS.getMONWS();
  8.    //Saisie du login et du pass pour authentification BASIC
  9.    monSrv.setUsername("ici le login" );
  10.    monSrv.setPassword("ici le pass" );
  11.    //Appel du web service
  12.    resultat = monSrv.moFonction(mesParam);
 


Le problème que je rencontre est le suivant :
Comment générer ce fichier .keystore nécessaire avec les 3 fichiers que m'a envoyé le client ?

 

Dans le cas où je ferais fausse route, pourriez-vous m'expliquer comment me connecter en SSL à ce webservice en utilisant ces 3 fichiers ?

 

Vous m'enlèveriez une sacrée épine du pied.

 

Merci à tous


Message édité par NoiBe49 le 21-05-2007 à 09:51:09
Reply

Marsh Posté le 21-05-2007 à 09:46:00   

Reply

Marsh Posté le 06-06-2007 à 14:50:03    

Bon, je relance mon sujet car je suis toujours dans l'impasse. Cependant, j'ai tout de même avancé.

 

Avec mes 3 fichiers PEM, j'ai créé un keystore dans lequel j'ai mit le fichier :
- cert.pem
- issuer.pem

 

J'ai généré le keystore avec keytool grâce aux lignes suivante :

 
Code :
  1. keytool -importcert -trustcacerts -alias cer_client -file cert.pem -keystore monkeystore.jks
  2. keytool -importcert -trustcacerts -alias cer_client2 -file issuer.pem -keystore monkeystore.jks


J'ai copier ce fichier monkeystore.jks sous C:\

 

Maitenant j'essai de faire appel à mon webservice via le code suivant :

 
Code :
  1. //Valider votre certificat serveur comme sûr
  2. System.setProperty("javax.net.ssl.trustStore", "C :/ monkeystore.jks" );
  3. System.setProperty("javax.net.ssl.trustStorePassword", "motdepasse" );
  4. //Recherche du web service
  5. MONWSServiceLocator theWS = new ServiceETLServiceLocator();
  6. theWS.setSIETLEndpointAddress("http://AdresseWeb.com/deMonWS/monWS" );
  7. MONWSSoapBindingStub monSrv = (MONWSSoapBindingStub) theWS.getMONWS();
  8. //Appel du web service
  9. resultat = monSrv.moFonction(mesParam);


Cependant, au moment de se connecter au webservice, j'ai droit à l'erreur suivante :

 
Citation :

  

         AxisFault
  faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
  faultSubcode:

 

faultString: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable tofind valid certification path to requested target
  faultActor:
  faultNode:
  faultDetail:
 


Là je sèche complètement et tourne en rond depuis plusieurs jours. Où ai-je bien pu faire une erreur ?

 

- Problème lors de la création du keystore ?
- Mauvaise utilisation des fichier PEM ?
- Mauvaise déclaration dans mon code ?
- Ou bien un truc que j'ai pas pigé tout simplement ?

 

Merci à ceux qui me fileront un coup de main


Message édité par NoiBe49 le 06-06-2007 à 14:51:28
Reply

Marsh Posté le 07-06-2007 à 16:44:39    

Bon, je piétine un peu :

 

Avec openSSL, j'ai créé un fichier pkcs12 :

 
Code :
  1. openssl pkcs12 -export -inkey key.pem -in cert.pem -out certif.p12
 


J'ai ajouté ce certificat à la banque de certificat de firefox et j'ai tenté de contacter l'url du webservice via firefox. Je sélectionne le certificat fraichement ajouté et ... ça marche. Je me retrouve sur une page me disant que je n'accède pas correctement au webservice mais je me connecte quand même au serveur donc le fichier pkcs12 est correct.

 

Je tente maintenant d'utiliser ce même fichier dans mon programme java en ramplcant 2 lignes :

Code :
  1. System.setProperty("javax.net.ssl.trustStore", "C  :/ monkeystore.p12" );
  2. System.setProperty("javax.net.ssl.trustStoreType", "PKCS12" );
  3. System.setProperty("javax.net.ssl.trustStorePassword", "motdepasse" );


Et là .... même foutue erreur :

 
Citation :

 


AxisFault
  faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
  faultSubcode:  faultString: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable tofind valid certification path to requested target
  faultActor:
  faultNode:
  faultDetail:
 


Je sais vraiment plus quoi faire ...


Message édité par NoiBe49 le 07-06-2007 à 16:45:16
Reply

Marsh Posté le 29-08-2007 à 19:40:58    

Bonjour,
 
Depuis une semaine, je suis face a un problème comme le votre.  
est ce que vous pourriez m'aider a résoudre ce problème ?
 
merci d'avance


---------------
BESBES Noureddine
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed