web-dev-qa-db-fra.com

Erreur lors de l'importation du certificat public dans un magasin de clés

J'ai un certificat public d'un CA. Je souhaite créer une connexion Java SSL à l'aide de ce certificat. J'ai mentionné Comment puis-je utiliser différents certificats sur des connexions spécifiques? et Connexion Java SSL avec certificat auto-signé sans copier le magasin de clés complet sur le client . Je comprends dès lors que je dois importer le certificat dans un magasin de clés. Cependant, je n'ai reçu aucun magasin de clés de la part de l'autorité de certification. J'ai créé un magasin de clés et essayé d'y importer le certificat public. Mais alors j'obtiens l'erreur suivante:

erreur keytool: Java.lang.Exception: les clés publiques de réponse et de magasin de clés ne correspondent pas

Ai-je besoin d'un fichier de clés de l'autorité de certification ou est-ce que je fais quelque chose de mal?


Commande utilisée pour créer le magasin de clés:

keytool -genkey -alias Tomcat -keyalg RSA -keystore keystore.jks

Commande utilisée pour importer le cert:

keytool -import -v -alias Tomcat -file signed-cert.pem -keystore keystore.jks
8
DanMatlin

Je pense que vous ne suivez pas correctement le processus de connexion au certificat. Vérifiez cette discussion https://forums.Oracle.com/thread/153394 pour les implémenter correctement en suivant les étapes ci-dessous:

  1. créer un magasin de clés keytool -genkey -keyalg RSA -keystore test.keystore -validity 360 (cela génère un magasin de clés et une clé (DC) avec l'alias "mykey")

  2. créer une demande de signature de certificat (CSR). keytool -certreq -keyalg RSA -file test.csr -keystore test.keystore (cela génère un fichier texte CSR)

  3. Avait signé un certificat généré: http://www.instantssl.com/ssl-certificate-support/csr_generation/ssl-certificate-index.html

  4. Certificat signé importé (méfiez-vous des CRLF si vous collez un certificat signé à l’étape 3) keytool -import -alias newkey -file <signed cert file> -keystore test.keystore (? Il est important qu’il ait un alias différent de l’étape 1 (par défaut, "mykey")?

  5. Exporter la clé publique à l'usage du client keytool -export -alias mykey -file test.publickey -keystore test.keystore

Sur le système serveur

  1. créer un magasin de clés de confiance keytool -genkey -keyalg RSA -keystore test.truststore -validity 360 (cela génère un magasin de clés et une clé (contrôleur de domaine) avec l'alias "mykey")

  2. Importer une clé publique - pour tester le service SSL SOAP via le client keytool -import -file test.publickey -keystore test.truststore

Le problème était de laisser l'alias des étapes 1 et 6 à "mykey". Quand j'ai changé l'étape 6 pour devenir: keytool -genkey -alias testAlias -keyalg RSA -keystore test.truststore -validity 360

vous pouvez importer en utilisant l'étape 7 ci-dessus (bien que j'aie ajouté "-alias apublickey" à l'étape 7). Cela a fonctionné pour moi.

5
PeggyP

Vous pouvez utiliser keyStore Explorer gui tool pour générer un magasin de clés/certificat et pour importer/exporter un certificat dans le magasin de clés. 

3
ManojP

J'ai rencontré le même problème lors de l'importation du certificat SSL dans le magasin de clés. Dans mon cas, le certificat de l'autorité de certification racine était absent de la chaîne. J'ai exporté le certificat racine dans un fichier et importé manuellement dans le magasin de clés.

0
azhar buttar

Veuillez remplacer l'alias de Tomcat par un autre, car vous utilisez le même alias pour Keystore

0
Rishi Raj Tandon