Je cherche comment obtenir l'emplacement de cacerts
de l'installation par défaut Java, lorsque vous n'avez pas 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 rechercher $Java_HOME
courir:
/usr/libexec/Java_home
les 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 sur lequel JDK n'est pas installé. Avec JDK installé, comme le dit pR0Ps , il est à
$(/usr/libexec/Java_home)/jre/lib/security/cacerts
À partir de OS X 10.10.1 (Yosemite), l’emplacement du fichier cacerts
a été remplacé par
$(/usr/libexec/Java_home)/jre/lib/security/cacerts
Si vous devez accéder à ces certificats via un programme, 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 cas (qui s'assure que la collection construite cacerts 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 préoccuper de l’emplacement du fichier ou du mot de passe du fichier de clés.
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 Java, le fichier cacerts est en
~/.sdkman/candidates/Java/current/jre/lib/security
Dans High Sierra, le cacerts est situé à: /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts
Vous pouvez également consulter readlink -f "which Java
". Cependant, cela pourrait ne pas fonctionner pour tous les wrappers binaires. Il est probablement préférable de démarrer réellement une classe Java.