Comment obtenir l’emplacement des cacerts de l’installation Java par défaut?

Je cherche à savoir comment obtenir l’emplacement des cacerts de l’installation Java par défaut lorsque JAVA_HOME ou JRE_HOME défini.

J’ai besoin d’une solution qui fonctionne au moins pour OS X et Linux .

Oui. java -v est supposé fonctionner 🙂

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 exécutez:

 /usr/libexec/java_home 

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

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

MISE À JOUR (OS X avec JDK)

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

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

Depuis OS X 10.10.1 (Yosemite), l’emplacement du fichier cacerts a été modifié pour

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

Si vous devez accéder à ces certificates par programmation, il est préférable de ne pas utiliser le fichier, mais d’y accéder via le gestionnaire de confiance. Le code suivant provient d’un cas de test OpenJDK (qui vérifie que la collection de cacerts générée 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 à gérer l’emplacement du fichier ou le mot de passe du fichier de clés.

Vous pouvez également consulter readlink -f ” which java “. Cependant, cela pourrait ne pas fonctionner pour tous les wrappers binarys. Il est probablement préférable de démarrer une classe Java.