En Linux , para encontrar la ubicación de $JAVA_HOME
:
readlink -f /usr/bin/java | sed "s:bin/java::"
la cacerts
están bajo lib/security/cacerts
:
$(readlink -f /usr/bin/java | sed "s:bin/java::")lib/security/cacerts
En mac OS X , para encontrar $JAVA_HOME
ejecutar:
/usr/libexec/java_home
la cacerts
están bajo Home/lib/security/cacerts
:
$(/usr/libexec/java_home)/lib/security/cacerts
ACTUALIZAR (OS X con JDK)
El código anterior se probó en una computadora sin JDK instalado. Con JDK instalado, como dijo pR0Ps , está en
$(/usr/libexec/java_home)/jre/lib/security/cacerts
/usr/libexec/java_home
/usr/libexec/java_home
me da una respuesta diferente delreadlink
comando -based anterior, y el primero parece ser correcto, ya que contiene elcacerts
archivo.A partir de OS X 10.10.1 (Yosemite), la ubicación del
cacerts
archivo se ha cambiado afuente
Si necesita acceder a esos certificados mediante programación, es mejor no usar el archivo en absoluto, sino acceder a él a través del administrador de confianza. El siguiente código es de un caso de prueba de OpenJDK (que asegura que la colección de cacerts compilada no esté vacía):
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("PKIX"); trustManagerFactory.init((KeyStore) null); TrustManager[] trustManagers = trustManagerFactory.getTrustManagers(); X509TrustManager trustManager = (X509TrustManager) trustManagers[0]; X509Certificate[] acceptedIssuers = trustManager.getAcceptedIssuers();
Por lo tanto, no tiene que lidiar con la ubicación del archivo o la contraseña del almacén de claves.
fuente
En MacOS Mojave, la ubicación es:
/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre/lib/security/cacerts
Si usa sdkman para administrar las versiones de Java, el cacerts está en
fuente
~/.sdkman/candidates/java/current/lib/security
En High Sierra, los cacerts se encuentran en:
/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts
fuente
También puede consultar readlink -f "
which java
". Sin embargo, es posible que no funcione para todos los contenedores binarios. Lo más probable es que sea mejor iniciar una clase Java.fuente