我在寻找如何如何获得的位置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::"
在cacerts
正在lib/security/cacerts
:
$(readlink -f /usr/bin/java | sed "s:bin/java::")lib/security/cacerts
在Mac OS X中 ,找到$JAVA_HOME
运行:
/usr/libexec/java_home
在cacerts
正在Home/lib/security/cacerts
:
$(/usr/libexec/java_home)/lib/security/cacerts
UPDATE(与JDK OS X)
上述代码在计算机上测试没有安装JDK。 在安装JDK, 如pR0Ps说 ,它在
$(/usr/libexec/java_home)/jre/lib/security/cacerts
作为OS X 10.10.1(约塞米蒂)的,则的位置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();
所以,你不必处理文件位置或库密码。
在高塞拉利昂,在cacerts中位于: /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts
您也可以咨询的readlink -f“ which java
”。 然而,它可能不适用于所有的二进制包装工作。 这是最有可能不如真正开始的Java类。