Java Keytool erreur après le certificat d'importation, "keytool erreur: java.io.FileNotFoundException & Accès Refusé"

j'essaie de connecter une API Web Java via HTTPS; cependant, une exception est lancée:

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

j'ai suivi ces étapes que j'ai apprises des tutoriels en ligne sur le certificat de keytool & SSL:

  1. " j'ai copié l'URL HTTPS dans le navigateur, téléchargé les certificats SSL et les ai installés dans le navigateur en utilisant Internet Explorer.

  2. mon ordinateur, les certificats ont été enregistrés comme .cer

  3. a utilisé l'option d'importation de keytool. La commande ci-dessous exécutée sans erreur.

    keytool -import -alias downloadedCertAlias -keystore C:pathtomykeystorecacerts.file -file C:pathofexportedCert.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 a imprimé quelques données et signatures de certificats et on m'a demandé avec la question:

    faites confiance à ce certificat?

    j'ai répondu oui.

  6. l'invite cmd affichée

    certificat a été ajouté à keystore

    cependant, après ce message, Une autre exception a été affichée:

    keytool error: java.io.FileNotFoundException: C:Program files...cacerts <Access Denied>
    

enfin quand je j'ai vérifié la touche, le certificat SSL n'a pas été ajouté et mon application donne la même exception que celle que je recevais plus tôt en essayant de me connecter:

(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)
96
demandé sur B314005 2012-04-25 22:02:44

11 réponses

cela peut arriver si vous n'utilisez pas l'invite de commande en mode administrateur. Si vous utilisez windows 7, vous pouvez aller exécuter, taper cmd et appuyer sur Ctrl+Shift+enter. Ceci ouvrira l'invite de commande en mode administrateur. Si non, vous pouvez également cliquer sur démarrer -> tous les programmes -> accessoires -> cliquez-droit sur invite de commandes et cliquez sur "exécuter en tant qu'administrateur".

209
répondu Sharan Rajendran 2018-05-02 05:47:58

j'ai eu le même problème sous Windows et j'ai pu le résoudre en tournant cmd.exe en tant qu'administrateur (clic droit dans le menu démarrer, puis "Exécuter en tant qu'administrateur).

17
répondu daniel 2012-05-03 09:07:06

vérifiez les permissions d'écriture sur le keystore.

9
répondu partha saradhi 2012-07-22 16:30:18

j'avais le même problème lors de l'importation du certificat dans le keystore local. Chaque fois que j'émets la commande keytool, j'obtiens l'erreur suivante.

Le certificat

a été ajouté à keystore erreur keytool: java.io.FileNotFoundException: C:\Program fichiers\Java\jdk1.8.0_151\jre\lib\security (Access is denied)

suite solution work for me.

1) Assurez-vous que vous utilisez l'invite de commande en mode Administrateur

2) changez votre répertoire courant en %JAVA_HOME % \jre\lib\security

3) puis émettre la commande ci-dessous

keytool-import-alias "mycertificateemo" - file "C:\Users\name\Downloads\abc.crt "- cacerts de keystore

3) donner le mot de passe changeit

4) Inscrivez y

5) vous verrez le message suivant sur succès "Le certificat a été ajouté à keystore"

assurez-vous que vous donnez la " cacerts "seulement la valeur param en-keystore , car je donnais le chemin complet comme" C**:\Program Files\Java\jdk1.8.0_151\jre\lib\security**".

Espère que cela va fonctionner

4
répondu Waqas Ahmed 2017-12-06 08:07:33

pour les utilisateurs Mac assurez-vous de sudo et lorsque vous êtes invité à donner d'abord votre mot de passe administrateur et qui sera suivi par mot de passe keystore qui devrait normalement être "changeit" à moins que vous ne l'avez modifié.

1
répondu Vineet Kothari 2017-06-21 19:17:10

si vous utilisez windows8:

  1. Cliquez sur le bouton démarrer
  2. dans la case de recherche, tapez command prompt
  3. à partir du résultat, faites un clic droit sur command prompt et cliquez sur Run as administrator . Ensuite, exécutez la commande keytool.
0
répondu arungopal 2016-03-17 06:33:51

j'ai même lancé 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 vers le clavier n'est pas dans les chemins de votre système, alors vous devrez utiliser le chemin complet pour utiliser le clavier, qui est

C:\Program Files\Java\jre<version>\bin

donc, la commande devrait être comme

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

ça a marché pour moi.

0
répondu sher17 2017-02-14 12:59:18

J'ai le même problème sur Windows 10 lorsque J'utilise PowerShell, mais fonctionne si j'utilise cmd.

0
répondu ery 2018-07-10 12:56:17

vous pouvez vous donner les permissions pour corriger ce problème.

clic droit sur cacerts > choisir propriétés > sélectionner onglet Securit > Autoriser toutes les permissions à tous les noms de groupe et d'utilisateur.

ça a marché pour moi.

-1
répondu goyalshub1509 2016-05-31 22:34:37

résolu

  1. exécutez CMD en tant qu'administrateur.
  2. assurez-vous d'utiliser le bon mot de passe de truststore
-1
répondu Ismael ozil 2017-09-13 07:32:24

vous pouvez stocker un autre disque ou 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

enter image description here

-2
répondu maithanhduyan 2016-10-14 09:22:25