如何获取默认安装Java cacerts中的位置?(How to obtain the locati

2019-06-17 17:21发布

我在寻找如何如何获得的位置cacerts默认Java安装的,当你没有JAVA_HOMEJRE_HOME定义。

我需要至少适用于解决OS XLinux

是。 java -v假定工作:)

Answer 1:

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


Answer 2:

作为OS X 10.10.1(约塞米蒂)的,则的位置cacerts文件已被更改为

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


Answer 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();

所以,你不必处理文件位置或库密码。



Answer 4:

在高塞拉利昂,在cacerts中位于: /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts



Answer 5:

您也可以咨询的readlink -f“ which java ”。 然而,它可能不适用于所有的二进制包装工作。 这是最有可能不如真正开始的Java类。



文章来源: How to obtain the location of cacerts of the default java installation?
标签: java security