Подтвердить что ты не робот

Как получить местоположение cacerts стандартной java-установки?

Я рассмотрю, как получить местоположение cacerts для установки java по умолчанию, если у вас нет JAVA_HOME или JRE_HOME.

Мне нужно решение, которое работает как минимум для OS X и Linux.

Да. java -v предполагается работать:)

4b9b3361

Ответ 1

Под Linux, чтобы найти расположение $JAVA_HOME:

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

the cacerts находятся под lib/security/cacerts:

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

В Mac OS X найдите $JAVA_HOME run:

/usr/libexec/java_home

the cacerts находятся под Home/lib/security/cacerts:

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

ОБНОВЛЕНИЕ (OS X с JDK)

выше код был протестирован на компьютере без установленной JDK. С установленным JDK как указано pR0Ps, он находится в

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

Ответ 2

Как и в OS X 10.10.1 (Yosemite), местоположение файла cacerts было изменено на

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

Ответ 3

Если вам нужен программный доступ к этим сертификатам, лучше вообще не использовать файл, а получить к нему доступ через менеджер доверия. Следующий код взят из тестового примера OpenJDK (который гарантирует, что собранная коллекция cacerts не пуста):

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

Таким образом, вам не нужно иметь дело с местоположением файла или паролем хранилища ключей.

Ответ 4

В High Sierra, то cacerts расположен по адресу: /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts

Ответ 5

Вы также можете обратиться к readlink -f "which java". Однако это может не работать для всех двоичных оберток. Скорее всего, лучше начать Java-класс.

Ответ 6

В MacOS Mojave расположение:

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

Если для управления версиями Java используется sdkman, то

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