java keystore

JAVA有一个keystore用来存放私钥和证书,该文件是伴随JDK默认存在的,路径默认是/lib/security/cacerts,默认密码是changeit,实际上空密码也可以直接访问

其中cacerts就是上面说的keystore

我们使用命令keytool -list -rfc -keystore cacerts来列出其中的内容

-list -rfc 这些参数的意思可以参考下图

在乐山的时候,我们的代码曾经在测试环境报过一个错误

我们代码报这个错,是在KeyProvider这个bean实例化的时候,要给密钥容器密码赋值,我们配的是明文12345678,导致解密失败。实际上配置密文就可以了。

但是为什么配了明文之后,解密失败,最后keystorePassword为空,竟然也能正常工作呢。

经过查资料和不断实验,我发现无论keystore设置什么密码,都能以空密码进入。也就是说,keystore就是可以在不输入密码的时候访问的。那这个密码的用途是什么呢。

在不输入密码的时候访问keystore,有一段提示

*****************  WARNING WARNING WARNING  *****************
* 存储在您的密钥库中的信息的完整性  *
* 尚未经过验证!  为了验证其完整性, *
* 必须提供密钥库口令。                  *
*****************  WARNING WARNING WARNING  *****************

可以看出,该密码的作用是为了维护信息的完整性

具体的工作机制,在stackoverflow中有人做了解答:https://stackoverflow.com/questions/2343691/do-you-not-need-a-password-to-access-a-truststore-made-with-the-java-keytool

原文地址:https://www.cnblogs.com/heben/p/7651479.html