J'essaye 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 apprises grâce aux tutoriels keytool et SSL cert en ligne:
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.
Exporté les certificats vers un chemin sur mon ordinateur, les certificats ont été enregistrés sous
.cer
Utilisé l'option d'importation de keytool. La commande ci-dessous s'est exécutée sans aucune erreur.
keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
J'ai été invité à entrer un mot de passe à l'invite de commande, que j'ai entré puis j'ai été authentifié.
La
cmd
fenêtre a imprimé des données et des signatures de certificat et j'ai été invité avec la question:Faites confiance à ce certificat?
J'ai répondu oui.
L'invite cmd affichée
Le certificat a été ajouté au magasin de clés
Cependant, après ce message, une autre exception a été affichée:
keytool error: java.io.FileNotFoundException: C:\Program files\...\cacerts <Access Denied>
Enfin, lorsque j'ai vérifié le keystore, 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)
la source
keytool
commande exacte que vous avez exécutée, et sa sortie? certains des problèmes évidents ici sont la faute de frappe de l'-keystore
argument et le fait que keytool n'a pas pu trouver le keystore dans lequel importer la cléRéponses:
Cela peut se produire si vous n'exécutez pas l'invite de commande en mode administrateur. Si vous utilisez Windows 7, vous pouvez aller à exécuter, tapez cmd et appuyez sur Ctrl + Maj + Entrée. Cela ouvrira l'invite de commande en mode administrateur. Sinon, vous pouvez également aller dans démarrer -> tous les programmes -> accessoires -> faire un clic droit sur l'invite de commande et cliquer sur «exécuter en tant qu'administrateur».
la source
J'ai eu le même problème sous Windows et j'ai pu le résoudre en exécutant cmd.exe en tant qu'administrateur (clic droit dans le menu démarrer, puis "Exécuter en tant qu'administrateur).
la source
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'ai l'erreur suivante.
Le certificat a été ajouté à l'erreur keytool du fichier de clés: java.io.FileNotFoundException: C: \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ security (l'accès est 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 émettez la commande ci-dessous
keytool -import -alias "mycertificatedemo" -file "C: \ Users \ name \ Downloads \ abc.crt" -keystore cacerts
3) donnez le changement de mot de passe
4) entrez y
5) vous verrez le message suivant en cas de réussite "Le certificat a été ajouté au keystore"
Assurez-vous que vous ne donnez le " cacerts " que dans la valeur du 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 cela fonctionnera
la source
Vérifiez les autorisations d'écriture sur le keystore.
la source
Pour les utilisateurs de Mac, assurez-vous de sudo et, lorsque vous y êtes invité, donnez d'abord votre mot de passe administrateur, qui sera suivi du mot de passe du keystore qui devrait généralement être "changeit" sauf si vous l'avez réellement changé.
la source
Si vous utilisez Windows8:
command prompt
command prompt
et cliquezRun as administrator
. Exécutez ensuite la commande keytool.la source
Vous pouvez vous accorder des autorisations pour résoudre ce problème.
Cliquez avec le bouton droit sur cacerts> choisissez les propriétés> sélectionnez l'onglet Sécurité> Autoriser toutes les autorisations sur tous les noms de groupe et d'utilisateur.
Cela a fonctionné pour moi.
la source
J'ai même exécuté l'invite de commande en tant qu'administrateur, mais cela n'a pas fonctionné pour moi avec l'erreur ci-dessous.
Si le chemin d'accès au keytool ne se trouve pas dans vos chemins système, vous devrez utiliser le chemin complet pour utiliser le keytool, qui est
Donc, la commande devrait être comme
cela a fonctionné pour moi.
la source
J'ai également eu cette erreur même si j'ai exécuté cmd en tant qu'administrateur.
La cause première est: Le fichier provient de VCS (subversion, perforce, etc.), et lorsque j'ai vérifié les propriétés de ce fichier, ses attributs sont en lecture seule .
La solution est donc:
la source
RÉSOLU
la source
Vous pouvez stocker un autre disque ou chemin (pas C) EX: D \
la source