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 d'accès à la demande de la ciblecause 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 à la demande de la cible
j'utilise tomcat 6 en tant que serveur web. j'ai deux https webbapplication installé sur différents tomcat sur differte port, mais sur la même machine. Dire App1(port 8443)
et
App2(port 443)
. App1
se connecte à l' App2
.Lors de l' App1
se connecte à l' App2 i
obtenir l'erreur ci-dessus. Je sais que c'est très commune erreur est venu à travers de nombreuses solutions sur les différents
des forums et des sites. J'ai en dessous de l'entrée en server.xml
de tomcat j'.e
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. Ceci semble être vrai aussi, quand j'ai fatigué de frapper le 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). Donc, je reçois l'erreur ci-dessus. Donc, pour le mettre dans le fichier de clés certifiées j'ai essayé ces options de l'arborescence des je.e
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é en dernier est en cours d'exécution java approche proposée dans la Façon de gérer les certificats SSL non valides avec Apache HttpClient? par Pascal Thivent je.e 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 quand je l'ai mentionné mêmes valeurs en 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");
en app1
programme.
Pour plus d'informations c'est de cette façon que je suis en train de la connexion
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());