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

je regarde comment obtenir l'emplacement de cacerts de l'installation java par défaut, quand vous n'avez pas défini JAVA_HOME ou JRE_HOME .

j'ai besoin d'une solution qui fonctionne au moins pour OS X et Linux .

Oui. java -v est supposé fonctionner:)

60
demandé sur sorin 2012-08-13 18:45:55

4 réponses

sous Linux , pour trouver l'emplacement de $JAVA_HOME :

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

les 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 run:

/usr/libexec/java_home

les cacerts sont sous Home/lib/security/cacerts :

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

UPDATE (OS X with JDK)

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

$(/usr/libexec/java_home)/jre/lib/security/cacerts
102
répondu Kuf 2017-05-23 11:47:05

à partir de OS X 10.10.1( Yosemite), l'emplacement du fichier cacerts a été modifié en

$(/usr/libexec/java_home)/jre/lib/security/cacerts
37
répondu pR0Ps 2015-01-15 19:56:30

si vous avez besoin d'accéder à ces certs par programmation, 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 est d'un OpenJDK Test cas (qui s'assure que la collection cacerts construit 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();

pour que vous n'ayez pas à vous occuper de l'emplacement du fichier ou du mot de passe de keystore.

3
répondu eckes 2018-02-07 00:43:50

vous pouvez également consulter readlink-f " which java ". Cependant, il pourrait ne pas fonctionner pour tous les emballages binaires. Il est probablement préférable de commencer un cours en Java.

1
répondu eckes 2015-01-15 20:00:16