Bonjour, j'ai un webService JAX-WS déployée sur Jboss 5 via http, je voudrai faire l'appel à ce web service avec une requête sécurisé via https,
Comment je procède ?
Bonjour, j'ai un webService JAX-WS déployée sur Jboss 5 via http, je voudrai faire l'appel à ce web service avec une requête sécurisé via https,
Comment je procède ?
J'ai arrivé à tourné mon application déployé dans Jboss 5 via le protocole HTTPS,mais ce que j'ai pas compris c'est que le fichier qui m'a été fourni a l'extension .jks par contre j'ai trouvé des tutos qui disaient que le clé doit être d'extension .keystore :
keystoreFile="${jboss.server.home.dir}/conf/server.keystore"
C'est quoi la différence entre les deux ? se sont-ils de même type ??
J'ai trouvé la réponse, c'est un format de keyStore propriétaire de SUN.
Salut
Attention, si c'est une authentification réciproque, il te faut également un truststore. (cacerts).je voudrai faire l'appel à ce web service avec une requête sécurisé via https,
Comment je procède ?
Effectivement, lors de l'appel du webService dans le code Java il y a une exception de type sun.security.validator.ValidatorException sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.
Je ne suis pas sûr si c'est à cause que le keystore est non valide (il faut payer), mais après une première recherche il se peut qu'il me manque un truststore, mais comment générer un tel type de fichier et est ce qu'il y a d'autre config à faire ou code à ajouter ??
Merci d'avance.
J'ai ajouté ces deux ligne dans mon code :
l'exception a changé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 System.setProperty("javax.net.ssl.trustStore", "/conf/keystore.jks"); System.setProperty("javax.net.ssl.trustStorePassword", "password");
Il se peut que c'est un pb liée à l'authentification ! je vais chercher de plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 javax.xml.ws.WebServiceException: Failed to access the WSDL at: https://pc121:1443/Sipa-ws/SipaWS?wsdl. It failed with: java.security.cert.CertificateException: No name matching pc121 found. at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:151) ... Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching pc121 found
J'ai ajouté ce morceaux de code lors de l'appel de mon web service:
Et ça marche il n'y a plus un message d'erreur, mais dans le browser il m'affiche une erreur http: Etat HTTP 401 - Access refused
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 static { //for localhost testing only javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier( new javax.net.ssl.HostnameVerifier() { public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) { if (hostname.equals("localhost")) { return true; } return false; } }); }
Est ce qu'il y a d'autres configs à faire !? Et merci.
ça doit être un truc du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 String keystoreFile = "C:\\Documents and Settings\\...\\keystore.jks"; String trustStore = "C:\\Documents and Settings\\...\\cacerts"; System.setProperty("javax.net.ssl.keyStore", keystoreFile); System.setProperty("javax.net.ssl.keyStorePassword", "changeit"); System.setProperty("javax.net.ssl.trustStore", trustStore ); System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); System.setProperty("javax.net.ssl.trustStoreType", "JKS");
Mais le trustStore n'est pas forcement nécessaire.
Un peu d'aide.
Merci Rockley enfin ça marche, mais juste je veux savoir est ce que avec cette config mon web service sera sécurisé à 100% (bon je sais bien qu'il n'y a pas de pourcentage soit sécurisé soit non ), mais je veux dire est ce que je garantie qu'il n'y a plus d'appels avec des requêtes http.
Merci.
Je te dis ce que j'ai compris ( à savoir que je ne connaissais rien y'a 3 mois ).
HTTPS: c'est HTTP+SSL,
Vu que t'a mis en place une communication SSL avec des certificats, tes appels se feront en HTTPS.
Après, rien n'est sûr à 100%
Partager