J'ai besoin d'importer un certificat dans mon keystore JVM. J'utilise ce qui suit:
keytool -import -alias daldap -file somecert.cer
je devrais donc probablement changer mon appel en quelque chose comme:
keytool -import -alias daldap -file somecert.cer -keystore cacerts –storepass changeit
Réponses:
Votre keystore sera dans votre fichier
JAVA_HOME---> JRE -->lib---> security--> cacerts
. Vous devez vérifier où votre JAVA_HOME est configuré, éventuellement l'un de ces endroits,Ordinateur ---> Avancé -> Variables d'environnement ---> JAVA_HOME
Les fichiers de commandes de démarrage de votre serveur.
Dans votre commande d'importation -keystore cacerts (indiquez ici le chemin complet du JRE ci-dessus au lieu de simplement dire cacerts).
la source
Emplacement du keystore
Chaque commande keytool a une
-keystore
option pour spécifier le nom et l'emplacement du fichier de keystore persistant pour le keystore géré par keytool. Le keystore est par défaut stocké dans un fichier nommé.keystore
dans le répertoire de base de l'utilisateur, tel que déterminé par la propriété système "user.home". Étant donné le nom d'utilisateur uName, la valeur de la propriété "user.home" est par défautAinsi, si le nom d'utilisateur est "cathy", "user.home" prend la valeur par défaut
http://docs.oracle.com/javase/1.5/docs/tooldocs/windows/keytool.html
la source
~/.keystore
fichier mystère ! Si j'ai omis le-keystore
paramètre, je ne pouvais pas déterminer lekeytool
ciblage par défaut du keystore . J'ai continué à cherchercacerts
ailleurs sur la machine. Je ne m'attendais pas à ce que keytool soit généré~/.keystore
dans le répertoire personnel, ni à ce qu'il soit nommé à la.keystore
place decacerts
. Vous avez rempli un espace que les gens de Java devraient documenter! Je vous remercie!Mac OS X 10.12 avec Java 1.8:
$ JAVA_HOME / jre / lib / sécurité
/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
De là, c'est dans:
J'ai un keystore cacerts là-dedans.
Pour spécifier ceci comme option VM:
Je ne dis pas que c'est la bonne façon (pourquoi java ne sait-il pas regarder dans JAVA_HOME?), Mais c'est ce que j'ai dû faire pour que cela fonctionne.
la source
Vous pouvez le trouver dans votre répertoire "Accueil":
Sous Windows 7:
Sous Linux (Ubuntu):
la source
user.home
est égale à$HOMEDRIVE$HOMEPATH
set par windows et non sur$HOME
set par cygwin oùHOMEDRIVE=C:
etHOMEPATH=\Users\[YOUR ACCOUNT]
Cela fonctionne pour moi:
Uniquement pour Linux. Mon Solaris n'a pas de lien de lecture. À la fin, j'ai utilisé ce Perl-Script:
la source
Comme DimtryB l'a mentionné, par défaut, le keystore se trouve sous le répertoire utilisateur. Mais si vous essayez de mettre à jour le
cacerts
fichier, afin que la JVM puisse choisir les clés, vous devrez mettre à jour lecacerts
fichier sousjre/lib/security
. Vous pouvez également afficher les clés en exécutant la commandekeytool -list -keystore cacerts
pour voir si votre certificat est ajouté.la source
lib/security
automatiquement le chemin correct si on ne lui donne que le nom relatif.-importcert
. La commande list affiche les certificats à l'échelle du système mais la commande d'importation génère un nouveau fichier dans le répertoire courant.updatedb; locate cacerts
aide à trouver où se trouvent les emplacements d'installation des fichiers cacerts.Sur Debian, en utilisant la version openjdk "1.8.0_212", j'ai trouvé des cacerts ici:
Bien sûr, ce serait pratique s'il y avait une commande standard qui imprimerait ce chemin.
la source
Pour moi, en utilisant l'image officielle OpenJDK 12 Docker , l'emplacement du keystore Java était:
la source
keytool -import -file example.crt -alias exampleCA -keystore truststore.jks
vous utilisez également le paramètre-keystore
... assez peu clair à mon humble avis. Et le dernier mais non le moindre: je cherchais ce problème exact - et j'ai trouvé que c'était une question. Peut-être que d'autres font la même chose.Nous avons rencontré ce problème sur un Tomcat fonctionnant à partir d'un répertoire jre qui a été (presque entièrement) supprimé après une mise à jour automatique de jre, de sorte que le jre en cours d'exécution ne pouvait plus trouver jre ... / lib / security / cacerts car il n'existait plus.
Le redémarrage de Tomcat (après avoir modifié la configuration pour s'exécuter à partir d'un autre emplacement jre) a résolu le problème.
la source
En plus de toutes les réponses ci-dessus:
Si la mise à jour du fichier cacerts dans le répertoire JRE n'aide pas, essayez de le mettre à jour dans JDK.
C: \ Program Files \ Java \ jdk1.8.0_192 \ jre \ lib \ security
la source