Une erreur d'échec de construction du chemin PKIX se produit lors de l'appel de l'interface ETC

Lorsque vous travaillez récemment sur un projet ETC, javax.net.ssl.SSLHandshakeException s'est produite lors de l'appel de l'interface ETC.

Informations complètes sur les exceptions:

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

Les informations d'exception ci-dessus invitent: la cible de la demande n'a pas trouvé de chemin de certification valide. Le protocole de communication réseau sécurisé HTTPS est utilisé pour accéder à l'interface ETC. La cause de ce problème est que l'environnement JVM où se trouve l'application ne trouve pas le fichier de certificat correct.

En fait, la solution est assez simple, c'est-à-dire télécharger le certificat de l'adresse de l'interface et l'installer dans l'environnement où se trouve la JVM. Les étapes spécifiques sont les suivantes:

  • Étape 1: Entrez l'adresse de l'interface que l'application doit appeler sur le navigateur, puis appuyez sur F12, puis cliquez sur le bouton Afficher le certificat dans la colonne de sécurité;
    Insérez la description de l'image ici
    rappelez-vous le nom du certificat:
    Insérez la description de l'image ici

  • Étape 2: Entrez dans "Exécuter" certmgr.msc, ouvrez la fenêtre de gestion des certificats et recherchez le fichier de certificat que nous devons télécharger;
    Insérez la description de l'image ici

  • Étape 3: Sélectionnez le fichier de certificat à télécharger, puis cliquez avec le bouton droit de la souris -> Toutes les tâches -> Exporter et exportez le certificat sur le disque local;
    Insérez la description de l'image ici

  • Étape 4: Ouvrez la fenêtre de commande, puis exécutez la keytoolcommande pour installer le certificat dans l'environnement local;

参数说明:
  -import 导入证书操作
  -alias 秘钥对的别名
  -keystore 秘钥对的路径及名称
  -file 证书文件的路径
  -trustcacerts 告诉keytool您要将其导入作为受信任的证书

Par exemple:

keytool -import -alias cacerts -keystore cacerts -file D:\JavaEE\JDK\jdk1.8.2\jre\lib\security\zsetc.crt -trustcacerts

Entrez le mot de passe du magasin de clés et appuyez sur Entrée.
Insérez la description de l'image ici
Si vous souhaitez afficher les certificats installés, vous pouvez exécuter la commande suivante:

keytool -list -v -alias cacerts -keystore cacerts -storepass 秘钥库的口令

Supprimer le certificat:

keytool -delete -alias cacerts -keystore cacerts -storepass 秘钥库的口令

En plus des méthodes ci-dessus, trois nouveaux certificats racine ont été ajoutés à la version JDK 8u101 (https://bugs.openjdk.java.net/browse/JDK-8154757).
Insérez la description de l'image ici
Par conséquent, les problèmes ci-dessus peuvent également être résolus en mettant à niveau le JDK.

Je suppose que tu aimes

Origine blog.csdn.net/zhongliwen1981/article/details/106767589
conseillé
Classement