Я рассмотрю, как получить местоположение cacerts
для установки java по умолчанию, если у вас нет JAVA_HOME
или JRE_HOME
.
Мне нужно решение, которое работает как минимум для OS X
и Linux
.
Да. java -v
предполагается работать:)
Я рассмотрю, как получить местоположение cacerts
для установки java по умолчанию, если у вас нет JAVA_HOME
или JRE_HOME
.
Мне нужно решение, которое работает как минимум для OS X
и Linux
.
Да. java -v
предполагается работать:)
Под 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
Как и в OS X 10.10.1 (Yosemite), местоположение файла cacerts
было изменено на
$(/usr/libexec/java_home)/jre/lib/security/cacerts
Если вам нужен программный доступ к этим сертификатам, лучше вообще не использовать файл, а получить к нему доступ через менеджер доверия. Следующий код взят из тестового примера OpenJDK (который гарантирует, что собранная коллекция cacerts не пуста):
TrustManagerFactory trustManagerFactory =
TrustManagerFactory.getInstance("PKIX");
trustManagerFactory.init((KeyStore) null);
TrustManager[] trustManagers =
trustManagerFactory.getTrustManagers();
X509TrustManager trustManager =
(X509TrustManager) trustManagers[0];
X509Certificate[] acceptedIssuers =
trustManager.getAcceptedIssuers();
Таким образом, вам не нужно иметь дело с местоположением файла или паролем хранилища ключей.
В High Sierra, то cacerts расположен по адресу: /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts
Вы также можете обратиться к readlink -f "which java
". Однако это может не работать для всех двоичных оберток. Скорее всего, лучше начать Java-класс.
В 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