tengo - ¿Cómo obtener la ubicación de los cacerts de la instalación Java predeterminada?
importar certificado java cacerts (4)
A partir de OS X 10.10.1 (Yosemite), la ubicación del archivo cacerts
se ha cambiado a
$(/usr/libexec/java_home)/jre/lib/security/cacerts
Estoy buscando cómo obtener la ubicación de los cacerts
de la instalación java predeterminada, cuando no tiene JAVA_HOME
ni JRE_HOME
definidos.
Necesito una solución que funcione al menos para OS X
y Linux
.
Sí. java -v
se supone que funciona :)
En Linux , para encontrar la ubicación de $JAVA_HOME
:
readlink -f /usr/bin/java | sed "s:bin/java::"
las cacerts
están en lib/security/cacerts
:
$(readlink -f /usr/bin/java | sed "s:bin/java::")lib/security/cacerts
En mac OS X , para encontrar ejecutar $JAVA_HOME
:
/usr/libexec/java_home
los cacerts
están en Home/lib/security/cacerts
:
$(/usr/libexec/java_home)/lib/security/cacerts
ACTUALIZACIÓN (OS X con JDK)
el código anterior se probó en la computadora sin JDK instalado. Con JDK instalado, como dijo pR0Ps , está en
$(/usr/libexec/java_home)/jre/lib/security/cacerts
Si necesita acceder a esos certificados mediante programación, es mejor no usar el archivo en absoluto, pero acceda a él a través del administrador de confianza. El siguiente código es de un caso de Test OpenJDK (que asegura que la colección de cacerts incorporada 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.
También puede consultar readlink -f " which java
". Sin embargo, podría no funcionar para todas las envolturas binarias. Lo más probable es que sea mejor comenzar una clase Java.