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:
-
" 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.
- mon ordinateur, les certificats ont été enregistrés comme
.cer
-
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
-
on m'a demandé un mot de passe à l'invite de commande, que j'ai entré puis j'ai été authentifié.
-
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.
-
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)
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".
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).
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 certificata é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
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é.
si vous utilisez windows8:
- Cliquez sur le bouton démarrer
- dans la case de recherche, tapez
command prompt
- à partir du résultat, faites un clic droit sur
command prompt
et cliquez surRun as administrator
. Ensuite, exécutez la commande keytool.
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.
J'ai le même problème sur Windows 10 lorsque J'utilise PowerShell, mais fonctionne si j'utilise cmd.
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.
résolu
- exécutez CMD en tant qu'administrateur.
- assurez-vous d'utiliser le bon mot de passe de truststore
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