Maison  >  Article  >  Java  >  ## 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 ?

## 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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 17:52:03375parcourir

## Why does my Java client get a

É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 :

  1. 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>
  2. 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 :

    • Exportez le certificat du serveur au format PEM (par exemple, certificate.crt) à l'aide d'un outil comme openssl.
    • 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>
  3. 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>
  4. 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>
  5. 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn