Erreur Java Keytool après l’importation du certificate, «erreur keytool: java.io.FileNotFoundException & Access Denied»

J’essaie de connecter une API Web Java via HTTPS; cependant, une exception est levée:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException 

J’ai suivi ces étapes que j’ai apsockets des tutoriels en ligne keytool & SSL cert:

  1. J’ai copié l’URL HTTPS dans le navigateur, téléchargé les certificates SSL et les installé dans le navigateur à l’aide d’Internet Explorer.

  2. Exporté les certificates sur un chemin sur mon ordinateur, les certificates ont été enregistrés en tant que .cer

  3. Utiliser l’option d’importation de l’outil clé. La commande ci-dessous est exécutée sans erreur.

     keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer 
  4. On m’a demandé un mot de passe à l’invite de commande, que j’ai entré puis j’ai été authentifié.

  5. La fenêtre cmd imprimé des signatures et des données de certificate et on m’a demandé avec la question:

    Faites confiance à ce certificate?

    J’ai répondu oui.

  6. L’invite de cmd affichée

    Le certificate a été ajouté au magasin de clés

    Cependant, après ce message, une autre exception était affichée:

     keytool error: java.io.FileNotFoundException: C:\Program files\...\cacerts  

Enfin, lorsque j’ai vérifié le fichier de clés, le certificate SSL n’a pas été ajouté et mon application donne la même exception que celle que je recevais plus tôt lors de la connexion:

 (javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException) 

Cela pourrait se produire si vous n’exécutez pas l’invite de commande en mode administrateur. Si vous utilisez Windows 7, vous pouvez vous lancer, tapez cmd et appuyez sur Ctrl + Maj + Entrée. Cela ouvrira l’invite de commande en mode administrateur. Sinon, vous pouvez aussi commencer -> tous les programmes -> accessoires -> cliquez sur l’invite de commande et cliquez sur “Exécuter en tant qu’administrateur”.

J’ai eu le même problème sous Windows et j’ai pu résoudre le problème en exécutant cmd.exe en tant qu’administrateur (cliquez avec le bouton droit dans le menu Démarrer, puis sur “Exécuter en tant qu’administrateur).

Vérifiez les permissions d’écriture sur le fichier de clés.

J’avais le même problème lors de l’importation du certificate dans le magasin de clés local. Chaque fois que j’émets la commande keytool, j’ai l’erreur suivante.

Le certificate a été ajouté à l’erreur keytool keystore: exception java.io.FileNotFoundException: C: \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ security (access refusé)

La solution suivante fonctionne pour moi.

1) assurez-vous que vous exécutez l’invite de commande dans Rus en mode administrateur

2) Changez votre répertoire actuel en% JAVA_HOME% \ jre \ lib \ security

3) puis lancez la commande ci-dessous

keytool -import -alias “mycertificateedemo” -file “C: \ Users \ name \ Downloads \ abc.crt” -keystore cacerts

3) donner le changement de mot de passe

4) entrez y

5) vous verrez le message suivant sur le succès “Certificat a été ajouté au magasin de clés”

Assurez-vous de ne donner les ” cacerts ” que dans la valeur de paramètre -keystore, car je donnais le chemin complet comme “C **: \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ security **”.

J’espère que ça va marcher

Pour les utilisateurs Mac, assurez-vous que sudo et lorsque vous y êtes invité, donnez d’abord votre mot de passe administrateur, suivi du mot de passe du fichier de clés, qui devrait normalement être “modifié”, sauf si vous l’avez réellement modifié.

Si vous utilisez Windows8:

  1. Cliquez sur le bouton de démarrage
  2. Dans la zone de recherche, tapez l’ command prompt
  3. À partir du résultat, cliquez avec le bouton droit sur command prompt et cliquez sur Run as administrator . Ensuite, exécutez la commande keytool.

J’exécute même l’invite de commande en tant qu’administrateur mais cela n’a pas fonctionné pour moi avec l’erreur ci-dessous.

 'keytool' is not recognized as an internal or external command, operable program or batch file. 

Si le chemin d’access à l’outil-clé n’est pas dans les chemins d’access de votre système, vous devrez utiliser le chemin d’access complet pour utiliser l’outil-clé, qui est:

 C:\Program Files\Java\jre\bin 

Donc, la commande devrait être comme

 "C:\Program Files\Java\jre\bin\keytool.exe" -importcert -alias certificateeFileAlias -file CertificateFileName.cer -keystore cacerts 

cela a fonctionné pour moi.

J’ai le même problème sous Windows 10 lors de l’utilisation de PowerShell, mais fonctionne si j’utilise cmd.

Vous pouvez vous accorder des permissions pour résoudre ce problème.

Cliquez avec le bouton droit sur cacerts> choisissez Propriétés> sélectionnez l’onglet Sécurité> Autoriser toutes les permissions pour tous les noms de groupe et d’utilisateur.

Cela a fonctionné pour moi.

RESOLU

  1. Il suffit de lancer CMD en tant qu’administrateur.
  2. Assurez-vous que vous utilisez le bon mot de passe du fichier de clés certifiées

Vous pouvez stocker plus de disque ou de chemin (pas C) EX: D \

 C:\Program Files\Java\jre1.8.0_101\bin>keytool -genkey -alias server -keyalg RSA -keysize 2048 -keystore D:\myserver.jks -dname "CN=myserver,OU=IT-WebDev, O=TIACHOP, L=HCM, ST=0753, C=VN" && keytool -certreq -alias server -file D:\myserver.csr -keystore D:\myserver.jks 

entrer la description de l'image ici