SSL 和证书密钥库
我的 Java 程序如何知道包含证书的密钥库的位置?
或者:如何告诉我的 Java 程序在哪里可以找到密钥库?
以某种方式指定密钥库后,如何指定用于向客户端认证服务器的证书?
我的 Java 程序如何知道包含证书的密钥库的位置?
或者:如何告诉我的 Java 程序在哪里可以找到密钥库?
以某种方式指定密钥库后,如何指定用于向客户端认证服务器的证书?
SSL 属性通过系统属性在 JVM 级别进行设置。这意味着您可以在运行程序时设置它们(java -D....)或者,您可以通过执行 System.setProperty 在代码中设置它们。
您必须设置的特定键如下:
javax.net.ssl.keyStore- 包含应用程序进程自己的证书和私钥的 Java 密钥库文件的位置。在 Windows 上,指定的路径名必须使用正斜杠 / 代替反斜杠。
javax.net.ssl.keyStorePassword - 从 javax.net.ssl.keyStore 指定的密钥库文件访问私钥的密码。此密码使用两次:解锁密钥库文件(存储密码)和解密存储在密钥库中的私钥(密钥密码)。
javax.net.ssl.trustStore - 包含此应用程序进程信任的 CA 证书集合的 Java 密钥库文件的位置(信任存储)。在 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。
System.setProperty("javax.net.ssl.trustStore", path_to_your_jks_file);