Bonjour,

Voici mon scénario :
- Je développe une application Web qui repose sur une Servlet centrale.
- Cette Servlet, une fois terminée, tournera sur un Tomcat, sur une machine à laquelle je n'ai que peu d'accès (à part pour y uploader mon code).
- Cette Servlet, au cours de son exécution, a besoin de se connecter à un autre serveur de l'entreprise, en https.
- Pour l'instant, quand je réalise cette connection (à l'aide de la classe "URLConnection"), j'ai l'exception suivante : "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"
- Ceci est normal car il faut un certificat.

Premier point flou: Quand je me connecte à la même adresse avec un navigateur (Firefox, Internet explorer) depuis ma propre machine (pas depuis le serveur qui hébergera le Tomcat pour ma servlet), on ne m'affiche pas de message d'erreur/avertissement. J'ignore si c'est parce que j'ai déjà le certificat qu'il faut côté client ( 1) soit parce que mon entreprise l'a installé par défaut sur ma machine, 2) soit parce que, la toute première fois, j'ai ajouté moi-même une exception pour un certificat auto-signé, et depuis j'ai oublié que je l'ai fait).
J'aimerais pouvoir vérifier ça. Quand j'affiche la liste des certificats dans firefox, il m'en affiche beaucoup, et je ne sais pas comment identifier celui qu'il utilise pour se connecter à ce site. J'ignore aussi si la machine qui héberge le Tomcat a les mêmes certificats dans son keystore.

Imaginons que le problème vienne du fait que le certificat est auto-signé.
Dans ce cas, je ne suis pas très chaud pour accepter systématiquement tous les certificats auto-signés. J'aimerais l'accepter uniquement la première fois, puis toujours utiliser le même (ce qui limiterait le risque d'attaque MITM). J'ai trouvé cette page ( http://kerbtier.ch/2009/01/31/urlconnection-and-https ) qui explique comment accéder à un keystore en Java, après y avoir mis le certificat manuellement. Celle-page n'est pas mal non plus : http://stackoverflow.com/questions/8...surlconnection
Mais dans les deux cas il manque la pièce centrale du puzzle : Comment faire pour ajouter le certifcat au keystore depuis la Servlet ? Je ne peux pas utiliser la méthode décrite (exporter le certificat avec Firefox et le convertir en keystore), puisque je ne pourrai pas faire ça sur le serveur Tomcat.

Et surtout, avant ça, comme je l'ai déjà dit, comment s'assurer s'il s'agit d'un certificat auto-signé?