Maison >Java >javaDidacticiel >## Pourquoi mon client Java obtient-il une erreur \'Échec de la création du chemin PKIX\' lors de l'accès à un service Web HTTPS ?
Échec de la création du chemin PKIX : impossible de trouver un chemin de certification valide vers la cible demandée
Question :
Lors de la tentative d'accès à un service Web HTTPS particulier à l'aide d'un client Java, l'exception suivante est rencontrée :
java.lang.RuntimeException: PKIX path building failed: unable to find valid certification path to requested target
Réponse :
Cette exception indique que le Le client Java ne parvient pas à établir une connexion sécurisée avec le service Web en raison d'un problème avec la chaîne de certificat présentée par le serveur.
Solutions possibles :
Configurer le Trust Store :
Le client n'a peut-être pas les certificats nécessaires installés dans son magasin de confiance. Pour résoudre ce problème, définissez les propriétés système pour spécifier le chemin d'accès au magasin de confiance et son mot de passe :
<code class="java">System.setProperty("javax.net.ssl.trustStore", "clientTrustStore.key"); System.setProperty("javax.net.ssl.trustStorePassword", "password");</code>
Importer le certificat du serveur :
Si le magasin de confiance du client ne contient pas le certificat du serveur, importez-le manuellement. Suivez ces étapes :
Convertissez le fichier PEM en un X binaire Fichier de certificat .509 (par exemple, certificate.der) :
<code class="shell">openssl x509 -in certificate.pem -out certificate.der -outform DER</code>
Importez le fichier DER dans le magasin de confiance du client à l'aide de l'utilitaire keytool :
<code class="shell">keytool -import -alias server_cert -file certificate.der -keystore clientTrustStore.key</code>
Mettre à jour la configuration Java SSL :
Assurez-vous que la configuration Java SSL est correctement définie. Par exemple, en modifiant ~/.java/jre/lib/security/jssecacerts ou en utilisant la commande suivante :
<code class="shell">keytool -import -alias server_cert -file certificate.der -keystore cacerts</code>
Désactiver la vérification du certificat SSL (non recommandé) :
À titre temporaire, vous pouvez désactiver la vérification du certificat SSL, mais cela n'est pas recommandé en raison de problèmes de sécurité :
<code class="java">HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true);</code>
Obtenir Certificat différent :
Si le service Web nécessite un certificat spécifique, obtenez ce certificat et installez-le dans le magasin de confiance du client.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!