J'ai un client Java qui essaie d'accéder à un serveur avec un certificat auto-signé.
Lorsque j'essaie de poster sur le serveur, je reçois l'erreur suivante:
unable to find valid certification path to requested target
Ayant fait quelques recherches sur le problème, j'ai ensuite fait ce qui suit.
-
Enregistré le nom de domaine de mes serveurs sous forme de fichier
root.cer
. -
Dans le JRE de mon serveur Glassfish, j'ai exécuté ceci:
keytool -import -alias example -keystore cacerts -file root.cer
-
Pour vérifier que le certificat a bien été ajouté à mon cacert, j'ai fait ceci:
keytool -list -v -keystore cacerts
Je peux voir que le certificat est présent.
-
J'ai ensuite redémarré Glassfish et réessayé le 'post'.
Je reçois toujours la même erreur.
J'ai l'impression que c'est parce que mon Glassfish ne lit pas réellement le fichier cacert
que j'ai modifié mais peut-être un autre.
Avez-vous déjà rencontré ce problème et pouvez-vous me guider dans la bonne direction?
2 votes
Juste pour clarifier "J'ai un client Java qui essaie d'accéder à un serveur avec un certificat auto-signé.": vous parlez d'utiliser des certificats client qui sont auto-signés, n'est-ce pas? Y a-t-il une configuration spécifique pour les paramètres de votre connecteur sur Glassfish (paramètres du magasin de confiance, en particulier)?
0 votes
"J'ai un client Java essayant d'accéder à un serveur avec un certificat auto-signé." : tu parles d'utiliser des certificats de client qui sont auto-signés, n'est-ce pas ? - oui.
1 votes
J'ai trouvé 2 paramètres dans Glassfish JVM : -Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks et -Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks. Maintenant, je dois ajouter mon certificat à l'un d'eux. Pouvez-vous confirmer que c'est le keystore auquel je dois l'ajouter ?
8 votes
Sur le serveur, le keystore est pour le certificat du serveur et sa clé privée (le keystore est pour ce qui "appartient" à la partie locale). Le truststore est pour les certificats utilisés pour vérifier la confiance dans la partie distante. Vous devriez ajouter le certificat client à votre magasin de confiance serveur. (Voir cela aussi, bien que Glassfish ne semble pas utiliser l'emplacement par défaut de la JRE.)
0 votes
Ça a bien fonctionné Bruno. Je l'ai ajouté à mon truststore Glassfish. Merci beaucoup pour ton aide. Toi aussi, Dirk.
0 votes
Cette réponse peut également aider : stackoverflow.com/questions/4663147/…
0 votes
Possible duplicate de PKIX path building failed: impossible de trouver le chemin de certification valide vers la cible demandée
0 votes
Pour Glassfish V4, le processus a fonctionné pour moi mais comme TheCoder, j'ai ajouté à mon Glassfish cacerts.jks, pas celui de Java.
0 votes
Vérifiez ce lien erreur de construction du chemin pkix qui a résolu mon problème.
0 votes
Vérifiez votre connexion internet. Gradle pourrait avoir besoin de télécharger quelques éléments.
2 votes
Vous pouvez accepter aveuglément tous les certificats SSL comme le montre ce code d'exemple complet - Bien sûr, c'est sûr!: nakov.com/blog/2009/07/16/…