Comment résoudre javax.net.le protocole ssl.SSLHandshakeException Erreur?
Je suis connecté avec le VPN pour l'installation de l'API de l'inventaire pour obtenir la liste des produits et il fonctionne très bien. Une fois que je reçois le résultat de la web-service, et je lier à l'INTERFACE utilisateur. Et aussi, j'ai intégré PayPal avec ma demande de faire Express checkout quand je fais un appel pour un paiement que je suis confronté à cette erreur. J'utilise servlet pour les processus de back-end. Peut-on dire comment résoudre ce problème?
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
- ce que je voudrais savoir, qui cible exacte était dans thath cas... Vous obtenez une exception, mais vous n'obtenez pas d'informations sur la cible, qui peut être différent de ce que vous attendez.. j'ai un tel cas, je suis certain que mon lien a le certificat, et j'ai toujours cette exception
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous devez obtenir le certificat public du serveur auquel vous essayez de vous connecter. Qui peut être fait dans une variété de façons, comme en contactant l'administrateur du serveur et d'en faire la demande à l'aide d'OpenSSL pour le télécharger, ou, puisque cela semble être un serveur HTTP, la connexion avec n'importe quel navigateur, l'affichage de la page d'informations de sécurité et d'enregistrer une copie du certificat. (Google devrait être en mesure de vous dire exactement quoi faire pour votre navigateur.)
Maintenant que vous avez le certificat enregistré dans un fichier, vous devez l'ajouter à votre JVM du magasin de confiance. Au
$JAVA_HOME/jre/lib/security/
pour Jre ou$JAVA_HOME/lib/security
pour Jdk, il y a un fichier nommécacerts
, qui est livré avec Java et contient les certificats publics de la bien connue aux Autorités de Certification. Pour importer le nouveau cert, exécutez l'utilitaire keytool en tant qu'utilisateur qui a la permission d'écrire dans le fichier cacerts:Il sera plus susceptible de vous demander un mot de passe. Le mot de passe par défaut livré avec Java est
changeit
. Presque personne ne le change. Après avoir effectué ces étapes relativement simples, vous serez à communiquer de manière sécurisée et avec l'assurance que vous parlez vers le bon serveur et seul le bon serveur (tant qu'ils ne perdent pas de leur clé privée).Maintenant, j'ai résolu ce problème de cette façon,
Bien entendu, cette solution doit être utilisée uniquement dans des situations où il n'est pas possible d'installer le nécessaire certifcates à l'aide de
keytool
par exemple de test local temporaire certifcates.Chaque fois que nous essayons de nous connecter à l'URL,
si le serveur à l'autre site est en cours d'exécution sur le protocole https et exige que nous devrions communiquer grâce à l'information fournie dans le certificat
nous avons l'option suivante:
1) demander le certificat(télécharger le certificat), l'importation de ce certificat dans le fichier de clés certifiées. Par défaut du fichier de clés certifiées java utilise peut être trouvé dans \Java\jdk1.6.0_29\jre\lib\security\cacerts, alors si nous réessayer de se connecter à l'URL de connexion est acceptée.
2) Dans des conditions normales d'affaires des cas, on peut se connecter à l'URL internes dans les organisations, et nous savons qu'ils sont corrects.
Dans de tels cas, vous avez confiance que c'est la bonne URL, Dans de tels cas ci-dessus, le code peut être utilisé, qui ne sera pas mandat pour stocker le certificat pour se connecter à l'URL donnée.
pour le point n ° 2, nous devons suivre les étapes ci-dessous :
1) écrire ci-dessous la méthode qui définit HostnameVerifier pour HttpsURLConnection qui renvoie la valeur true pour tous les cas le sens que nous espérons que le trustStore.
2) écrire ci-dessous la méthode, qui appelle doTrustToCertificates avant d'essayer de se connecter à l'URL
Cet appel renvoie le code de réponse = 200 moyens de connexion est réussie.
Pour plus de détails et l'exemple d'échantillon que vous pouvez consulter URL.
Je crois que vous essayez de vous connecter à un quelque chose à l'aide de SSL, mais que quelque chose est de fournir un certificat qui n'est pas vérifié par les autorités de certification de racine telle que verisign.. En essence par défaut des connexions sécurisées ne peut être établie que si la personne qui tente de se connecter sait les contreparties de clés ou de certains autres verndor telle que verisign peut intervenir et dire que la clé publique fournie est en effet en droit..
TOUS les OS de la confiance à une poignée d'autorités de certification et les petits émetteurs de certificats doivent être certifiés par l'une des grandes certificateurs faire une chaîne de certificateurs si tu vois ce que je veux dire...
De toute façon revenir au point.. j'ai eu un problème similaire lors de la programmation d'une applet java et java server ( j'espère que certains jours, je me écrivez un article sur le blog à propos de la façon dont j'ai obtenu tous les sécurité au travail 🙂 )
En substance ce que j'avais à faire était d'extraire les clés publiques à partir du serveur et de le stocker dans un fichier de clés à l'intérieur de mon applet et quand je me suis connecté au serveur, j'ai utilisé ce magasin de clés pour créer une fiducie de l'usine et que la confiance en usine pour créer la connexion ssl. Il y a alterante de procédures, telles que l'ajout de la clé de la JVM hôte de confiance et de modifier la valeur par défaut de trust store sur démarrer..
Je l'ai fait environ deux mois en arrière et n'ont pas de code source sur moi en ce moment.. l'utilisation de google et vous devriez être en mesure de résoudre ce problème. Si vous ne pouvez pas me le message de retour et je peux vous fournir la corporation de code source pour le projet .. Ne sais pas si cela résout votre problème car vous n'avez pas fourni le code qui provoque ces exceptions. En outre, je travaillais avec des applets pensé que je ne peux pas voir pourquoi il l'habitude de travailler sur Serverlets...
P. S je ne peux pas obtenir le code source avant le week-end puisque externe SSH est désactivé dans mon bureau 🙁
SSLHandshakeException peut être résolu de 2 façons.
Intégrant SSL
Obtenir le SSL (en demandant à la source de l'administrateur système peut également
être téléchargé par commande openssl, ou tout navigateur télécharge le
certificats)
Ajouter le certificat en truststore (cacerts) situé à
JRE/lib/security
fournir le truststore emplacement en vm arguments
"-Djavax.net.le protocole ssl.trustStore="
Ignorant SSL
Pour ce n ° 2, veuillez visiter mon autre réponse sur un autre site stackoverflow:
Comment ingore vérification SSL Ignorer Certificat SSL Erreurs avec Java
Maintenant, j'ai résolu ce problème de cette façon,