Bonjour à toutes et à tous !
Je suis un petit nouveau dans ce forum mais j'ai un réel problème que je n'arrive pas à régler.
Si je post sur ce forum c'est que je sais qu'il y a des gens compétents !
Présentation du problème :
*J'ai une application JAVA qui a des WebServices (des points d'entrées pour l'application mère). Tout marche parfaitement en HTTP.
*Côté client, Flex avec FlexBuilder3 et l'import de WebServices, création des classes OK avec l'assistant.
Etape suivante :
*Sécurisation d'un WS avec mise en place du HTTPS: j'ai besoin de passer le login et le mot de passe au serveur que je contact.
Paramétrage de TomCat et du fichier web.xml ok, le web service est bien accessible sur HTTPS et passe sur le port 8443 automatiquement depuis un browser.
Voici le fichier web.xml:
Voici le fichier server.xml et mes connecteurs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <security-constraint> <web-resource-collection> <web-resource-name>All resources</web-resource-name> <url-pattern>/UserAuthenticationWS</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
*Mise en place d'un crossdomain.xml côte serveur sous deploy/jboss-web-deployer/ROOT.war dont voila le contenu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <Connector port="8081" address="${jboss.bind.address}" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" protocol="HTTP/1.1" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" /> <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" keystoreFile="${jboss.server.home.dir}/ssl/kc.keystore" keystorePass="monpasswd" sslProtocol="TLS" />
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="*" to-ports="*" secure="false"/> </cross-domain-policy>
A l'import du WS, impossible de régénérer les classes côté client. L'erreur standard "Unable to load WSDL."
Un petit coup d'oeil dans les logs de FlexBuilder me dit :
Recherche Google la dessus m'explique que le certificat n'est pas connu et que c'est ca qui fait planter tout ....javax.wsdl.WSDLException: WSDLException: faultCode=OTHER_ERROR: Unable to resolve imported document at 'https://localhost:8443/monAppli/UserAuthenticationWS?wsdl'.: 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
Alors pour faire les choses correctement j'ai même demander un certificat SSL de test pour être sur que tout se passe bien, et du coup IE qui se plaignait en accédant au HTTPS ne se plaint plus.
J'ai même importé les certificats dans le dépôts de certificats du jre (jre/lib/security/cacerts) mais rien n'y fait, j'ai toujours la même erreur ...
De plus j'ai remarqué la chose suivante :
- Si j'importe un WS https Amazon, aucun problème, je peux générer les classes correctement et je n'ai aucune erreurs. De plus quelques topics montrent que l'import de WS sur HTTPS est possible.
Ma question est donc la suivante : est ce que ce problème est déjà arrivé à quelqu'un d'entre vous ? Si oui comment l'avez vous résolu ?
Je suis intéressé de connaître les éventuelles manipulations que vous avez réalisé côté serveur :
Ai-je un fichier ou une instruction manquante ?
Pourquoi l'import marche-t-il avec un site comme Amazon dans le même projet et que je ne peut pas insérer un WS sur HTTPS que j'ai fait moi même ?
J'espère que vous pourrez m'apporter plein d'idées, car j'en suis à court ...
Merci de votre aide
Olivier
Partager