java SSL和cert keystore

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

以某种方式指定密钥库之后,如何指定用于validation服务器到客户端的证书?

System.setProperty("javax.net.ssl.trustStore",path_to_your_cacerts_file); 

SSL属性通过系统属性在JVM级别设置。 这意味着您可以在运行程序时设置它们(java -D ….)或者您可以通过执行System.setProperty将它们设置为代码。

您必须设置的具体键如下:

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

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

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

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

  1. $JAVA_HOME/lib/security/jssecacerts
  2. $JAVA_HOME/lib/security/cacerts

javax.net.ssl.trustStorePasswordjavax.net.ssl.trustStorejavax.net.ssl.trustStore指定的密钥库文件(存储密码)的密码。

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

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

首先,有两种密钥存储。

个人一般

应用程序将使用启动时指示的或系统的默认值。

如果JRE或JDK正在运行,或者如果您检查个人或“全局”的文件夹,它将是一个不同的文件夹。

它们也被encryption

总之,path将如下所示:

$ JAVA_HOME / lib / security / cacerts为“一般”,谁拥有所有权威的CA,是相当重要的。