144 votes

Comment obtenir l'emplacement des cacerts de l'installation java par défaut ?

Je cherche à savoir comment obtenir l'emplacement de cacerts de l'installation par défaut de java, lorsque vous n'avez pas JAVA_HOME o JRE_HOME défini.

J'ai besoin d'une solution qui fonctionne au moins pour OS X y Linux .

Oui. java -v est supposé fonctionner :)

241voto

Kuf Points 5775

Sous Linux pour trouver l'emplacement de $JAVA_HOME :

readlink -f /usr/bin/java | sed "s:bin/java::"

le site cacerts sont sous lib/security/cacerts :

$(readlink -f /usr/bin/java | sed "s:bin/java::")lib/security/cacerts

Sous mac OS X pour trouver $JAVA_HOME courir :

/usr/libexec/java_home

le site cacerts sont sous Home/lib/security/cacerts :

$(/usr/libexec/java_home)/lib/security/cacerts

UPDATE (OS X avec JDK)

Le code ci-dessus a été testé sur un ordinateur sans JDK installé. Avec JDK installé, comme l'a dit pR0Ps c'est à

$(/usr/libexec/java_home)/jre/lib/security/cacerts

55voto

pR0Ps Points 502

À partir de la version 10.10.1 (Yosemite) d'OS X, l'emplacement de l'icône de l'icône de l'utilisateur est modifié. cacerts a été modifié en

$(/usr/libexec/java_home)/jre/lib/security/cacerts

16voto

eckes Points 1191

Si vous devez accéder à ces certificats de manière programmatique, il est préférable de ne pas utiliser le fichier du tout, mais d'y accéder via le gestionnaire de confiance. Le code suivant provient d'un OpenJDK Test (qui s'assure que la collection de cacerts construite n'est pas vide) :

TrustManagerFactory trustManagerFactory =
    TrustManagerFactory.getInstance("PKIX");
trustManagerFactory.init((KeyStore) null);
TrustManager[] trustManagers =
    trustManagerFactory.getTrustManagers();
X509TrustManager trustManager =
    (X509TrustManager) trustManagers[0];
X509Certificate[] acceptedIssuers =
    trustManager.getAcceptedIssuers();

Vous n'avez donc pas à vous occuper de l'emplacement du fichier ou du mot de passe du keystore.

16voto

jumping_monkey Points 153

Pour Java 9 plus loin, c'est dans

${JAVA_HOME}/lib/security/cacerts

par opposition à l'habituel

${JAVA_HOME}/jre/lib/security/cacerts

12voto

Nish Points 96

Dans MacOS Mojave, l'emplacement est :

/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre/lib/security/cacerts 

Si vous utilisez sdkman pour gérer les versions de java, le cacerts se trouve dans

~/.sdkman/candidates/java/current/jre/lib/security

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X