La résolution de javax.net.le protocole ssl.SSLHandshakeException: le soleil.de sécurité.programme de validation.ValidatorException: PKIX chemin de la construction d'Erreur échec?

Edit :- Essayé de formater la question et a accepté de répondre dans les plus présentable façon à la mine Blog

Ici, est le problème d'origine.

J'obtiens cette erreur:

message détaillé soleil.de sécurité.programme de validation.ValidatorException: PKIX chemin
bâtiment a échoué:

soleil.de sécurité.fournisseur de.certpath.SunCertPathBuilderException: impossible de
trouver la validité de la certification chemin demandé cible

cause javax.net.le protocole ssl.SSLHandshakeException:
soleil.de sécurité.programme de validation.ValidatorException: PKIX chemin de bâtiment
échec: le soleil.de sécurité.fournisseur de.certpath.SunCertPathBuilderException:
impossible de trouver le chemin de certification valide pour demandé cible

Je suis en utilisant Tomcat 6 en tant que serveur web. J'ai deux HTTPS applications web installées sur différents Matous sur des ports différents, mais sur la même machine. Dire App1(port 8443) et
App2(port 443). App1 se connecte à App2. Lorsque App1 se connecte à App2 j'obtiens l'erreur ci-dessus. Je sais que c'est une erreur très commune c'est à travers de nombreuses solutions sur différents forums et sites. J'ai le dessous de l'entrée en server.xml de deux Matous:

keystoreFile="c:/.keystore" 
keystorePass="changeit"

Chaque site dit la même raison que le certificat donné par app2 n'est pas dans la confiance de magasin de app1 de la jvm. Cela semble être vrai aussi quand j'ai essayé de frapper la même URL dans le navigateur IE, ça fonctionne (avec le réchauffement, Il y a un problème avec ce site web de certificat de sécurité. Ici, je dis poursuivre sur ce site web). Mais quand même URL est frappé par le client Java (dans mon cas) j'obtiens l'erreur ci-dessus. Donc, pour le mettre dans le truststore j'ai essayé ces trois options:

Option1

System.setProperty("javax.net.ssl.trustStore", "C:/.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

Option2
Le réglage ci-dessous dans la variable d'environnement

CATALINA_OPTS -- param name
-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value

Option3
Le réglage ci-dessous dans la variable d'environnement

JAVA_OPTS -- param name
-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value

Mais rien n'a fonctionné .

Ce qui à travaillé pour la dernière fois est en cours d'exécution Java approche proposée dans Comment gérer les certificats SSL non valides avec Apache HttpClient? par Pascal Thivent c'est à dire l'exécution du programme InstallCert.

Mais cette approche est très bien pour devbox l'installation, mais je ne peux pas l'utiliser en environnement de production.

Je me demande
pourquoi trois approches mentionnées ci-dessus ne fonctionne pas lorsque j'ai mentionné les mêmes valeurs dans server.xml de app2 serveur et les mêmes valeurs dans truststore par la mise en

System.setProperty("javax.net.ssl.trustStore", "C:/.keystore") and System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

dans app1 programme.

Pour plus d'informations, c'est la façon dont je dois faire le lien:

URL url = new URL(urlStr);

URLConnection conn = url.openConnection();

if (conn instanceof HttpsURLConnection) {

  HttpsURLConnection conn1 = (HttpsURLConnection) url.openConnection();

  conn1.setHostnameVerifier(new HostnameVerifier() {
    public boolean verify(String hostname, SSLSession session) {
      return true;
    }
  });

  reply.load(conn1.getInputStream());
  • double possible de client http et SSL
  • Odly assez j'ai eu cette erreur lors de la communication entre les serveurs en cluster qui n'avait pas de SSL problèmes individuellement. Une fois que j'ai correctement configuré domainname dans mes serveurs RHEL le problème avait disparu. Espérons que cela aide quelqu'un.
  • Une autre chose à vérifier est que vous avez la dernière version de Java j'ai été faire une erreur similaire à cause de cela.
  • stackoverflow.com/questions/2893819/... - aussi pertinentes et une fantastique réponse.
InformationsquelleAutor M Sach | 2012-03-08