我正在研究如何获取cacerts
默认java安装的位置,当您没有JAVA_HOME
或已JRE_HOME
定义时.
我需要一个至少适用于OS X
和的解决方案Linux
.
是.java -v
假设工作:)
Kuf*_*Kuf 134
在Linux下,找到以下位置$JAVA_HOME
:
readlink -f /usr/bin/java | sed "s:bin/java::"
Run Code Online (Sandbox Code Playgroud)
以下cacerts
是lib/security/cacerts
:
$(readlink -f /usr/bin/java | sed "s:bin/java::")lib/security/cacerts
Run Code Online (Sandbox Code Playgroud)
在mac OS X下,找到$JAVA_HOME
run:
/usr/libexec/java_home
Run Code Online (Sandbox Code Playgroud)
以下cacerts
是Home/lib/security/cacerts
:
$(/usr/libexec/java_home)/lib/security/cacerts
Run Code Online (Sandbox Code Playgroud)
更新(OS X与JDK)
上面的代码是在未安装JDK的计算机上测试的.随着JDK的安装,正如pR0P所说的那样
$(/usr/libexec/java_home)/jre/lib/security/cacerts
Run Code Online (Sandbox Code Playgroud)
pR0*_*0Ps 41
从OS X 10.10.1(Yosemite)开始,cacerts
文件的位置已更改为
$(/usr/libexec/java_home)/jre/lib/security/cacerts
Run Code Online (Sandbox Code Playgroud)
jum*_*key 16
从Java 9
现在起,它在
${JAVA_HOME}/lib/security/cacerts
与平常相反
${JAVA_HOME}/jre/lib/security/cacerts
Nis*_*ish 10
在 MacOS Mojave 中,位置为:
/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre/lib/security/cacerts
Run Code Online (Sandbox Code Playgroud)
如果使用 sdkman 管理 java 版本,则 cacerts 在
~/.sdkman/candidates/java/current/jre/lib/security
Run Code Online (Sandbox Code Playgroud)
小智 7
在 High Sierra,cacerts位于:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/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();
Run Code Online (Sandbox Code Playgroud)
因此,您不必处理文件位置或密钥库密码。
归档时间: |
|
查看次数: |
117367 次 |
最近记录: |