web-dev-qa-db-fra.com

erreur keytool: Java.lang.Exception: échec de l'établissement de la chaîne à partir de la réponse

Générer le magasin de clés:

keytool -genkey -alias Tomcat -keyalg RSA -keystore my.keystore -keysize 2048

Générer une demande de signature de certificat (CSR):

keytool -certreq -alias Tomcat -keyalg RSA -file my.csr -keystore my.keystore

Je vais ensuite chez mon fournisseur d’hébergement pour obtenir des certificats. Ces j'ai installé comme suit:

keytool -import -alias root -keystore my.keystore -trustcacerts -file Gd_bundle-g2-g1.crt
keytool -import -alias intermed -keystore my.keystore -trustcacerts -file gdig2.crt
keytool -import -alias Tomcat -keystore my.keystore -trustcacerts -file my.crt

Lorsque j'ai installé le certificat final (my.crt), j'ai eu l'erreur suivante:

keytool error: Java.lang.Exception: Failed to establish chain from reply

Je pense avoir importé la chaîne et dans le bon ordre, ce message me laisse très perplexe. Quelqu'un peut-il voir ce que je fais mal?

26
Edd

Je viens de découvrir que les fichiers fournis avec mon certificat par godaddy sont tous deux des certificats intermédiaires (ils semblent en fait être le même certificat intermédiaire).

J'ai obtenu les certificats racine et intermédiaires corrects en double-cliquant sur mon certificat et en regardant le chemin du certificat ... à partir d'ici, je pourrais également télécharger chacun de ces certificats et utiliser les étapes utilisées dans la question pour les importer.

enter image description here

26
Edd

J'ai lutté avec le même problème pendant environ deux semaines jusqu'à ce que je trouve un moyen de le contourner. Le problème était que les certificats racine et intermédiaires fournis avec mon certificat de GoDaddy n'étaient pas ceux dont j'avais besoin. J'ai souvent cherché dans le référentiel de Godaddy, incapable de trouver les certificats appropriés.

J'ai visualisé mon certificat sur mon ordinateur portable (sous Windows 8.1). Là, j'ai vu la chaîne de certificats et j'ai pu exporter les certificats racine et intermédiaire. Ensuite, je les ai importés dans mon magasin de clés et cela a fonctionné comme il se doit.

Pour ce faire, suivez ces instructions:

  1. Affichez votre certificat sur un ordinateur exécutant Windows. Vous pourrez voir la chaîne de certificats sur le troisième onglet qui ressemble à l'image suivante.  enter image description here

  2. Sélectionnez le certificat racine dans la chaîne et cliquez sur le bouton "Afficher le certificat".

  3. Une nouvelle fenêtre s'ouvre, accédez au deuxième onglet et cliquez sur le bouton "Enregistrer le fichier". Cela ouvre un assistant d’exportation pour votre certificat.
  4. Lors de l’exportation, sélectionnez l’option X.509 base 64 et suivez les instructions. Enregistrez le fichier.
  5. Répétez l'opération pour le certificat intermédiaire.
  6. Téléchargez les deux certificats sur votre serveur et importez-les dans le magasin de clés en suivant l'ordre suivant: première racine, deuxième intermédiaire et enfin votre certificat. [Il n'est pas nécessaire d'importer le certificat racine]

REMARQUE: Avant d'importer ces certificats, je devais supprimer ceux qui se trouvaient dans mon magasin de clés et ne fonctionnaient pas. Pour ce faire, j'ai utilisé les instructions suivantes:

keytool -delete -alias [root] -keystore [keystore file]

Si vous n'êtes pas sûr du contenu de votre outil de clé, vous pouvez le visualiser en utilisant:

keytool -list -keystore [keystore file]
16

La même erreur s'est produite lors de la tentative d'importation de certificats certifiés par une autorité de certification dans le magasin de clés, dans un environnement Linux.

J'ai suivi une série d'étapes et je l'ai importé avec succès.

Après avoir reçu des certificats certifiés par une autorité de certification, procédez comme suit pour importer les certificats dans le magasin de clés.

étape 1:

Importez le certificat racine dans cacerts qui sera disponible dans le dossier Java_HOME/jre/lib/security à l'aide de la commande suivante:

keytool -importcert -alias root -file [root certificate] -keystore cacerts

Une fois que vous avez entré la commande ci-dessus, il vous sera demandé de saisir un mot de passe, entrez votre mot de passe et cliquez sur Oui.

étape 2:

Importer le certificat racine en utilisant la commande suivante:

keytool -importcert -alias root -file [root certificate] -keystore [keystore file name]

Une fois que vous avez entré la commande ci-dessus, il vous sera demandé de saisir un mot de passe, entrez votre mot de passe et cliquez sur Oui.

étape 3:

Importer un certificat intermédiaire en utilisant la commande suivante:

keytool -importcert -alias intermediate -file [intermediate certificate] -keystore [key store file name]

une fois que vous avez entré la commande ci-dessus, il vous sera demandé de remplacer le certificat déjà entré et de répondre oui.

Remarque: le certificat intermédiaire facultatif peut être ignoré, il est fourni avec le certificat racine.

étape 4:

Importer un certificat de site en utilisant la commande suivante:

keytool -trustcacerts -importcert -alias [alias name which give during keystore creation] -file [site certificate] -keystore [key store file name]

L'environnement exécuté par ces commandes correspond à Java version 7. Les certificats sont émis par GODADDY.

pour plus d'informations, consultez le site: http://docs.Oracle.com/javase/7/docs/technotes/tools/windows/keytool.html#importCertCmd

14
user2870979

Pour résoudre ce problème, utilisez un commutateur supplémentaire ( -trustcacerts ) dans les commandes keytool.

La commande pour importer des certificats intermédiaires du fichier intermediate.cer dans le fichier de clés du fichier certificates.ks devrait ressembler à ceci:

keytool -storetype JCEKS -storepass passwd -keystore certificates.ks -import -alias intermediate -trustcacerts -file intermediate.cer

La commande pour importer le certificat du fichier http.cer dans le fichier de clés de certificats.ks devrait ressembler à ceci:

keytool -storetype JCEKS -storepass passwd -keystore certificates.ks -import -alias http -trustcacerts -file http.cer

Relancez la procédure de création et d'importation d'un certificat SSL signé.

2
Viraj Nevase

Téléchargez la chaîne de certificats, ouvrez-la sous Windows - elle stocke le certificat de l'autorité de certification et votre réponse au certificat de l'autorité de certification. 

Commencez par importer le certificat de CA dans votre magasin de clés, puis importez la réponse de CA.

1
SpriteCZ

L'étape suivante est très importante avant d'importer les certificats dans votre magasin de clés local. Après avoir reçu les certificats signés de CA).

importer le certificat racine dans cacerts qui sera disponible dans le dossier Java_HOME/jre/lib/security en utilisant la commande suivante:

keytool -importcert -alias root -file [certificat racine] -keystore cacerts une fois que vous avez entré la commande ci-dessus, il sera demandé le mot de passe, entrez le mot de passe et cliquez sur oui.

0
user3877963