Bonjour,
J'ai en place l'architecture suivante :
Client WebService A -> Serveur Web A en http
Serveur Web A -> Serveur Web B en https
Donc en phrasé, celà donne : Un batch client consomme un service Web en http qui relaye cette demandé à un autre service web en https.
La question ici est donc de configurer le serveur web fonctionnant en http pour se connecter sur le serveur web fonctionnant en https. Le serveur que je tente donc de développer est un serveur "relais".
Afin de faire celà j'ai utilisé un bout de code client me permettant de récupérer un certificat fonctionnant sur ce dernier serveur
Cette méthode statique est donc appelée à chaque fois que le serveur A est consommé afin de configurer la connexion au serveur B en SSL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class SSLBuilder { public static void sslInit() { System.err.println("Init SSL ! "); System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); // Gestion certificat PROD //Récupération du keystore System.setProperty("javax.net.ssl.keyStore","c:\new.jks"); System.setProperty("javax.net.ssl.keyStorePassword", "changeit"); }
A savoir que cette méthode fonctionne très bien quand j'attaque le serveur B directement avec le client A mais dès que je l'adapte au serveur j'ai un "SSL handshake failure"
Code : Sélectionner tout - Visualiser dans une fenêtre à part SSLBuilder.sslInit();
Le souci c'est que ceci ne fonctionne pas même en rentrant le chemin d'accès du certificat en dur comme vous le voyez dans l'exemple !
(Et pourtant celà fonctionne avec un simple client java).
Avez-vous une idée de comment déclarer un certificat sur l'archive ear ou encore directement sur le serveur d'application afin que celui-ci puisse emettre des requêtes en SSL sur un autre serveur ?
Merci d'avance,
Cordialement,
Partager