IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

Mise en place d'un Web Service via HTTPS avec JBoss AS7


Sujet :

Services Web Java

  1. #1
    Membre éprouvé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 919
    Points
    919
    Par défaut Mise en place d'un Web Service via HTTPS avec JBoss AS7
    Bonjour,
    j'essaye de faire communiquer une application avec mon serveur via webservice.

    Contraintes:
    1. Serveur : Jboss as7
    2. Moteur Service : CXF 2 via JBossWS 4.1
    3. Protocole HTTPS/SSL
    4. Authentification : Couple Login/Password


    Pour l'instant j'ai un webservice fonctionnel en http. je viens d'activer le https sur le serveur. Le wsdl est joignable par navigateur en https. Je cherche donc à modifier mon application cliente pour accéder au serveur.

    J'ai créer un fichier .keystore avec la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
    J'ai lié mon .keystore avec mon serveur via le fichier standalone.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <connector name="https" protocole=HTTP/1.1" scheme="https" socket-binding="https" secure="true">
    <ssl key-alias="tomcat" password="<PASSWORD DU CERTIFICAT>" certificate-key-file="${jboss.server.config.dir}\certificats\.keystore" verify-client="false" />
    </connector>
    Comme dit plus haut le wsdl est joignable et on me demande bien d'accepter le certificat.

    Maintenant dans mon application cliente. j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    MonServiceEJB service = new MonServiceEJB();
    MonServiceRemote remote = service.getRessortissantEJB();
    BindingProvider bp =  (BindingProvider)remote;
    bp.getRequestedContext().put(BindingProvider.USERNAME_PROPERTY, "login");
    bp.getRequestedContext().put(BindingProvider.PASSWORD_PROPERTY, "mdp");
    remote.findAll();
    Premier blocage, eclipse refuse de me générer les classes avec le lien en https, je suis obligé de passé en http et de changer le lien dans les fichiers générés.

    Ensuite au deploiement de l'application j'ai l'erreur suivante :

    Failed to start service jboss.deployment.unit "monServiceClient.war"
    cause by: javax.xml.ws.WebserviceException : JBWS022087 : Failed to read https://localhost:8443/Monservice/MonServiceEJB?wsdl

    cause by : javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException : PKIP path building failed

    cause by : sun.provider.certpath.SunCertPathBuilderException : Unable to find valid certification path to requested target.
    Une idée de ce qui me manque pour corriger cette erreur? Sur le net j'entends parler de .cert .ca. trustore etc j'arrive pas a savoir ce que je dois prendre ou générer

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Malheureusement le message "Unable to find valid certification path to requested target" peux recouvrir pas mal d'erreurs potentielles comme par exemple des autorités de certification intermédiaires manquantes dans le truststore ou un problème au moment du handshake ssl.
    Pour avoir plus d'informations tu peux ajouter la variable suivante au démarrage de ta vm:
    -Djavax.net.debug=all ou alors -Djavax.net.debug=ssl
    Bon ça crache beaucoup de logs mais au moins tu devrais pouvoir retrouver la source de l'erreur

  3. #3
    Membre éprouvé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 919
    Points
    919
    Par défaut
    merci pour les variables. je testerai ça lundi au bureau. Sinon la méthode que j'ai suivie te semble bonne? je n'est rien d'autre a mettre en place pour ce que je veux faire?

  4. #4
    Membre éprouvé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 919
    Points
    919
    Par défaut
    bon, j'ai fait le boulet ! L'erreur ne viens pas du serveur mais de l'appli client, qui étais rester en deploiement sur le serveur.
    Donc je récapitule. J'ai un serveur configurer en https avec un certificats auto-signé.
    Cela marche très bien , j'accède au wsdl en https.

    Maintenant j'ai une application qui dit consommer ce service. Et l'a j'ai l'erreur de mon post précédent. Comment je fais pour dire à l'application d'accepter le certificat du serveur comme valide? En sachant que j'ai un truststore pour l'application contenant le certificat du serveur.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Côté client comment est utilisé le truststore, c'est le cacert de la jvm avec laquelle tu lances le client ?

  6. #6
    Membre éprouvé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Points : 919
    Points
    919
    Par défaut
    C'est bon, j'ai trouvé la solution.

    Donc j'ai du generer un trio certificat/keystore/truststore pour le client et le serveur.

    Ensuite j'ai incorporer le certificat du serveur dans le truststore de l'application.
    Dans le code de l'application avant l'appel au webservice je définit le truststore grâce à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    system.setproperty("javax.net.ssl.truststore, pathToTruststore);
    system.setproperty("javax.net.ssl.truststorePassword, passDuTrustStore);
    Ensuite j'ai du télécharger depuis le navigateur le wsdl correspondant au port 8443 ( port https par défaut de jboss), l'incorporer au client dnas le web-inf et générer mes classes cliente avec.

    Et voila ça marche correctement en https.
    Merci de ton aide en tous cas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'un web service via HTTPS
    Par IMPRO dans le forum Services Web
    Réponses: 0
    Dernier message: 17/03/2014, 11h11
  2. Consommer un web service via http get
    Par topolino dans le forum Services Web
    Réponses: 4
    Dernier message: 06/07/2010, 14h43
  3. Web Service via https
    Par Choun dans le forum Services Web
    Réponses: 0
    Dernier message: 02/07/2009, 16h56
  4. Aide sur la mise en place d'un Web Services
    Par stegou dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 15/06/2009, 17h57
  5. Appel d'un Web services via excel.
    Par killysui dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/02/2008, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo