java.lang.Exception: les clés Publiques de répondre et de magasin de clés ne correspondent pas
- Je accès à un service web hébergé sur le port 443.Fournisseur de services a partagé trois certificat avec nous.
- ABCD.cer
- CA_Certificate.cer
- CCA_Certificate.cer
J'ai à ajouter à keystore par la création d'un formulaire de chaîne pour la communication SSL.J'ai suivi les étapes ci-dessous.
-
keytool -keystore npci_keystore_test.jks -genkey -alias npci_client_testore
Result :- keystore npci_keystore_test.jks created.
-
keytool -import -keystore npci_keystore_test.jks -file CA_Certificate.cer -alias theCARoot
Result :- certificate CA_Certificate.cer is added to keystore.
-
keytool -import -keystore npci_keystore_test.jks -file CCA_Certificate.cer -alias theCCARoot
Result :- certificate CCA_Certificate.cer is added to keystore.
-
keytool -import -keystore npci_keystore_test.jks -file ABCD.cer -alias npci_client_testore
À l'étape 4 j'ai ci-dessous exception
Entrez le mot de passe du keystore: (et quand je rentre le mot de passe j'ai ci-dessous exception)
keytool erreur: java.lang.Exception: les clés Publiques de répondre et de magasin de clés ne correspondent pas
Je l'ai déjà fait de la recherche dans l'affirmative,mais jusqu'à présent aucune chance.
Je suis en dessous de source pour créer le magasin et l'importation de certificat.
JKS Keystore
EDIT:---
Je l'ai testé en changeant l'ordre d'importation de certificat,mais pas de chance jusqu'à présent.
Vous devez vous connecter pour publier un commentaire.
Le lien dans votre question explique comment créer un fichier de clés SSL pour un serveur, ce qui n'est pas ce que vous voulez faire. Ce que vous avez fait était:
L'étape 4 ne fonctionne pas parce que le certificat SSL a été généré pour un de complètement différent de la paire de clés.
Les trois certificats sont probablement:
Ce que vous avez à faire maintenant est d'ajouter une ancre de confiance de votre truststore (par défaut:
${JAVA_HOME}/jre/lib/security/cacerts
), avec le résultat que votre client accepte le certificat SSL du webservice.Généralement la SSL du serveur envoie l'ensemble de la chaîne, sauf pour le certificat racine au client lors de la connexion SSL. Cela signifie que vous devez ajouter le certificat racine de votre truststore:
Des étapes supplémentaires sont nécessaires si le webservice nécessite l'authentification de client SSL, mais vous n'avez jamais mentionné l'authentification du client, donc je suppose qu'il n'est pas nécessaire.
La question ici est l'alias que vous avez utilisé lors de l'importation du certificat qui est similaire à celui que vous avez utilisé lors de la création du JKS magasin. Il suffit de changer l'alias et il permettra de résoudre votre problème. Le document source [1] doit être corrigée en conséquence.
[1] http://docs.oracle.com/cd/E19509-01/820-3503/ggfgo/index.html
Dans les 4 point (là où vous obtenez l'erreur : keytool erreur: java.lang.Exception: les clés Publiques de répondre et de magasin de clés ne correspondent pas) lorsque vous importez le certificat, s'il vous plaît changer l'alias. Les alias ne doit pas être npci_client_testore comme il est déjà utilisé un alias du fichier de clés.
Dans mon cas, le "Le certificat racine qui a signé le CA" est absent de la chaîne. Veuillez vérifier si vous avez ce certificat RACINE CA sinon l'exportation à partir de l'Intermédiaire et de l'importer dans le fichier de clés. L'importation de l'autorité de certification Racine dans mon fichier de clés a fonctionné pour moi.
J'ai eu la même erreur d'exception (fichier de stockage des clés ne correspondent pas) avec hébergement Tomcat8. Si vous avez entré un
wrong domain name
ouno domain name
lors de la création de votre fichier de clés, vous aurez besoin de re-créer votre fichier de magasin de clés de nouveau et renvoyez votre RSE de nouveau à votre Autorité de Certification (CA) licence/reconnu/approuvé à délivrer des Certificats de Signature Numérique (Godaddy dans mon cas).Voici les commandes pour créer un fichier de magasin de clés:
(Vous devez entrez le nom de domaine lorsque l'invite vous demande un nom et prénom, c'est la demande de l' Nom de Domaine Pleinement Qualifié (FDQN), par exemple http://www.example.com). De la Ville, l'État et la Province -
do not abbreviate
Entrez la commande suivante pour créer la RSE (dans le même répertoire que votre serveur tomcat.emplacement du fichier de stockage des clés):
Remarque: en Raison de mon erreur précédente, j'ai dû supprimer tous mes Godaddy certificats de ma console windows (MMC).
Une fois votre Certificat de fichiers sont prêts à partir de votre Autorité de Certification. Télécharger les fichiers et double-cliquez sur chacun des 2 .crt fichiers afin de les réinstaller à nouveau dans windows (Choisissez installer automatiquement sur la Machine Locale). Assurez-vous de sauvegarder votre serveur tomcat.fichier de magasin de clés puis importer ces fichiers de certificat AFIN dans votre tomcat.fichier de magasin de clés (à partir de zéro) dans le même ordre que l'exemple suivant:
Assurez-vous que vous avez mis à jour votre server.xml redémarrez votre serveur Tomcat
Voilà! L'icône de verrouillage (Connexion Sécurisée) apparaît lors de la navigation sur le domaine.
Cela a fonctionné pour moi: