JAVA中Keystore文件的位置在哪里?

mkh*_*ata 5 java ssl https ssl-certificate

我知道 JRE 附带的 cacerts 文件是存储根 CA 证书的信任库,许多人也将此文件称为密钥库。但是,我对密钥库文件的理解是另一个文件,其中保存私钥以供服务器自行验证。

那么JAVA把私钥存放在哪里呢?或者密钥库文件的确切位置在哪里,它是否与 cacerts 文件相同?

此外,以下命令列出所有根 CA 证书:

> keytool -list -storepass changeit -keystore "C:\Program Files\Java\jre1.8.0_191\lib\security\cacerts"
Run Code Online (Sandbox Code Playgroud)

为什么 keytool 无法在没有-keystore-storepass标志的情况下列出根 CA?

And*_*eas 7

为什么 keytool 无法在没有-keystore-storepass标志的情况下列出根 CA?

从 Java 9 开始,它可以:

keytool -list -cacerts
Run Code Online (Sandbox Code Playgroud)

只需在出现密码提示时按 Enter 键即可。


JAVA私钥存储在哪里?

Java不会将它们存储在任何地方。

您可以将它们存储在密钥库文件中,存储在文件系统上您想要的任何位置。然后你告诉“服务器”它在哪里。

具体如何执行取决于“服务器”是什么,例如,对于Tomcat,您在文件中给出密钥库文件的路径server.xml

  • 在 Java 9 之前,为什么 keytool 没有这个选项?是因为 cacerts 文件被视为信任库和密钥库吗?对于私钥,是的,当然java不存储/提供私钥,但我的意思是JAVA是否有一些默认位置/文件来查找用户添加的私钥,我相信它相当于**javax.net .ssl.keyStore** JVM 属性? (2认同)