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 :

Web Services et SSL


Sujet :

Services Web Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Web Services et SSL
    Bonjour,
    je cherche a développer un client web services dont le provider est sur un serveur sécurisé par SSL.
    Si je chercher a afficher le fichier wsdl du provider dans mon navigateur internet il m'est demande d'accepter le certificat. Une fois accepte je peux voir le wsdl.

    Si je veux générer un client pour le web service en utilisant netbeans.
    New/Web Service Client.
    une fois l'URL du wsdl rentrée on me demande d'accepter le certificat, ce qui une fois fait me génère mon client de web service.

    Le problème c'est que a l'exécution de mon client cette exception est levée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    javax.xml.ws.WebServiceException: Failed to access the WSDL at: https://yyyy:xxxx/wwww/zzzz?wsdl. It failed with: 
            sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.
            at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:162)
            at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:144)
            at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:254)
            at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:217)
            at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:174)
            at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:104)
            at javax.xml.ws.Service.<init>(Service.java:56)
            at com.xyxyxy.webservices.b.xyxyxy.xyxyxyxy.xyxyxyxy.<init>(xyxyxyxyService.java:46)
            at org.apache.jsp.index_jsp._jspService(index_jsp.java:62)
            at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:93)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
            at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
            at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:470)
            at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:364)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
            at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
            at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
            at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
            at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
            at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
            at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
            at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
            at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
            at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
            at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
            at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
            at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
            at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
            at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:380)
            at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
            at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
    Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:150)
            at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1584)
            at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:174)
            at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:168)
            at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:848)
            at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:106)
            at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:495)
            at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:433)
            at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:877)
            at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1089)
            at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1116)
            at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1100)
            at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:402)
            at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:170)
            at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:934)
            at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
            at java.net.URL.openStream(URL.java:1007)
            at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.createReader(RuntimeWSDLParser.java:804)
            at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.resolveWSDL(RuntimeWSDLParser.java:261)
            at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:129)
            ... 45 more
    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:221)
            at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:145)
            at sun.security.validator.Validator.validate(Validator.java:203)
            at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:172)
            at com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(SSLContextImpl.java:320)
            at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:841)
            ... 60 more
    Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:236)
            at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:194)
            at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:216)
            ... 65 more
    J'imagine qu'il faut un moyen d'accepter le certificat lors de l'execution du client, ou encore de l'enregistrer en tant que certificat de confiance mais je ne sais pas comment faire.
    Merci de votre aide.


    (ps: j'ai un peu censure l'affichage de l'erreur pour préserver l'anonymat de la société pour laquelle je travaille)

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 76
    Points
    76
    Par défaut
    Salut,

    Il faut effectivement "accepter" ton certificat au niveau de ta JVM.
    Pour cela, il va falloir le télécharger et puis l'enregistrer avec keytool (du jdk).

    Jette un oeil ici : http://www.dga.co.uk/customer/public...B!OpenDocument

    A+

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    J'ai ajoute le certificat dans le truststore et dans le keystore de mon serveur, amis j'ai toujours la meme erreur.

    J'ai essaye de placer mon consumer sur le meme serveur que le provider et l'erreur persiste.

    Dans le lien que tu m'as envoye une des etapes est

    3. Now change your source code.
    Faute de precision supplementaires je n'ai rien rajouter a mon code.
    Si tu as deja fait la manip, est ce que tu pourrais me dire ce qu'il faut rajouter.

    D'avance merci.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 76
    Points
    76
    Par défaut
    Salut,

    Le certificat c'est au niveau du client qu'il faut l'accepter. Pas serveur.
    Le "change your source code", je pense qu'il signifie simplement de mettre à jour l'url.

    Pour récapituler :
    côté serveur :
    - génération d'un certificat (keytool -genkey)
    - activation du connecteur ssl (server.xml)


    côté client :
    - import du certificat serveur dans le certificate store
    - mise à jour de l'URL vers l'adresse https

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    J'ai bien fait tout cela et ça ne marche toujours pas, je réessaierai avec le vrai certificat signé une fois que je l'aurais reçu.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 76
    Points
    76
    Par défaut
    Etrange.

    N'as-tu pas plusieurs JVM installées ? Dès fois que celle que Tomcat utilise soit différente de celle pour laquelle tu as enregistré le certificat ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Apres avoir testé mon client sur un serveur Glassfish, et sur le même serveur JBoss que le provider, j'ai essaye de le faire tourner sur un serveur JBoss différent du provider et ça a marché.
    Je ne comprend pas pourquoi cela ne marche pas dans les autres cas mais de toute façon la configuration pour la production sera celle la.
    Provider et Consumer sur des serveurs JBoss différents.

    Je te remercie de ton aide et de ta persévérance.

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

Discussions similaires

  1. Comment utiliser un Web service avec SSL ?
    Par Gaspard22 dans le forum Services Web
    Réponses: 4
    Dernier message: 15/06/2015, 10h18
  2. Web service et SSL
    Par tlili_info dans le forum Langage
    Réponses: 1
    Dernier message: 01/07/2011, 13h59
  3. Réponses: 0
    Dernier message: 15/09/2008, 11h04
  4. PHP, Web Service et SSL
    Par Calambo dans le forum Langage
    Réponses: 1
    Dernier message: 15/01/2008, 16h18

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