一尘不染

Java SSL和证书密钥库

java

我的Java程序如何知道包含证书的密钥库在哪里?或者,如何告诉我的Java程序在哪里寻找密钥库?

在以某种方式指定了密钥库之后,如何指定用于对服务器进行身份验证的证书?


阅读 850

收藏
2020-03-04

共2个答案

一尘不染

System.setProperty("javax.net.ssl.trustStore", path_to_your_jks_file);
2020-03-04
一尘不染

SSL属性是通过系统属性在JVM级别设置的。这意味着你可以在运行程序时设置它们(java -D ....),也可以通过执行System.setProperty在代码中进行设置。

你必须设置的特定键如下:

javax.net.ssl.keyStore-包含应用程序进程自己的证书和私钥的Java密钥库文件的位置。在Windows上,指定的路径名​​必须使用正斜杠/代替反斜杠。

javax.net.ssl.keyStorePassword-从javax.net.ssl.keyStore指定的密钥库文件访问私钥的密码。此密码使用了两次:解锁密钥库文件(存储密码),以及解密存储在密钥库中的私钥(密钥密码)。

javax.net.ssl.trustStore -Java密钥库文件的位置,该文​​件包含此应用程序进程信任的CA证书的集合(信任库)。在Windows上,指定的路径名​​必须使用正斜杠/代替反斜杠\

如果未使用此属性指定信任存储位置,则SunJSSE实现将在以下位置(按顺序)搜索并使用密钥存储文件:

  • $JAVA_HOME/lib/security/jssecacerts
  • $JAVA_HOME/lib/security/cacerts

javax.net.ssl.trustStorePassword- 用于解锁由所指定的密钥库文件(存储密码)的密码 javax.net.ssl.trustStore

javax.net.ssl.trustStoreType-(可选)对于Java密钥库文件格式,此属性的值为jks(或JKS)。通常不指定此属性,因为其默认值已经是jks。

javax.net.debug-要打开SSL / TLS层的日志记录,请将此属性设置为ssl。

2020-03-04