web-dev-qa-db-fra.com

Erreur Java Keytool après l'importation du certificat, "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 les étapes que j'ai apprises dans les tutoriels en ligne de Keytool & SSL Cert:

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

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

  3. Utilisé l'option d'importation du keytool. 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. Un mot de passe a été demandé à la commande Invite, que j'ai saisie puis authentifiée. 

  5. La fenêtre cmd imprimait des données de certificat et des signatures et la question me demandait: 

    Faites confiance à ce certificat?

    J'ai répondu oui.

  6. L'invite cmd affichée 

    Le certificat 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 <Access Denied>
    

Enfin, lorsque j'ai vérifié le magasin de clés, le certificat SSL n'a pas été ajouté et mon application génère la même exception que celle que je rencontrais auparavant lorsque je tente de me connecter:

(javax.net.ssl.SSLHandshakeException:Sun.security.validator.ValidatorException)
99
cyber101

Cela peut se produire si vous n'exécutez pas la commande Invite en mode administrateur. Si vous utilisez Windows 7, vous pouvez vous lancer, tapez cmd et appuyez sur Ctrl + Maj + Entrée. Cela ouvrira la commande Invite en mode administrateur. Sinon, vous pouvez aussi aller dans Démarrer -> Tous les programmes -> Accessoires -> Invite de commande avec le bouton droit de la souris et cliquer sur 'Exécuter en tant qu'administrateur'. 

222
Sharan Rajendran

J'avais le même problème sous Windows et je pouvais le résoudre par exécutant cmd.exe en tant qu'administrateur (clic droit dans le menu Démarrer, puis "Exécuter en tant qu'administrateur).

18
daniel

Vérifiez les autorisations d'écriture sur le magasin de clés.

9
partha saradhi

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

Le certificat a été ajouté au magasin de clés Erreur keytool: Java.io.FileNotFoundException: C:\Program Files\Java\jdk1.8.0_151\jre\lib\security (accès refusé).

La solution suivante fonctionne pour moi.

1) assurez-vous d’exécuter la commande Invite en mode Rus en tant qu’administrateur

2) Modifiez votre répertoire actuel en% Java_HOME%\jre\lib\security

3) puis émettez la commande ci-dessous

keytool -import -alias "mycertificatedemo" -file "C:\Utilisateurs\nom\Téléchargements\abc.crt" -keystore cacerts

3) donner le changement de mot de passe

4) entrez y

5) le message suivant apparaîtra avec succès "Le certificat a été ajouté au magasin de clés"

Assurez-vous de donner le " cacerts " uniquement dans la valeur du paramètre keystore, comme je donnais le chemin complet comme "C **:\Program Files\Java\jdk1.8.0_151\jre\lib\security * * ".

J'espère que ça va marcher

7
Waqas Ahmed

Pour les utilisateurs Mac, assurez-vous que vous utilisez Sudo et, lorsque vous y êtes invité, donnez d'abord votre mot de passe administrateur. Ce mot de passe sera suivi du mot de passe du magasin de clés, qui devrait normalement être "changeit", à moins que vous ne le changiez réellement. 

2
Vineet Kothari

Si vous utilisez Windows8:

  1. Cliquez sur le bouton de démarrage
  2. Dans la zone de recherche, tapez 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.
1
arungopal

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

0
ery

J'ai même exécuté la commande Invite en tant qu'administrateur mais cela ne fonctionnait pas 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'accès à l'outil de clé ne se trouve pas dans vos chemins d'accès système, vous devrez utiliser le chemin complet pour utiliser l'outil de clé, 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

cela a fonctionné pour moi.

0
sher17