我有一个没有密码的jks密钥库。当我运行命令
时keytool -list -keystore mykeystore.jks
它提示我输入密钥库密码,我只需点击“输入”。
请注意,密钥库密码不是'changeit'的默认java密码。这是空白的
当我尝试运行时
keytool -storepasswd -keystore mykeystore.jks
将密码更改为非空字符串。它第一次提示我输入当前密码。只需点击输入,因为它是空白的
keytool -storepasswd -keystore mykeystore.jks
Enter keystore password:
Keystore password is too short - must be at least 6 characters
与大家确认密码不是'changeit'
keytool -storepasswd -keystore mykeystore.jks
Enter keystore password: changeit
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
如果现有密码为空,我知道如何更改密钥库密码吗?
答案 0 :(得分:49)
如果您尝试使用Java默认系统密钥库(cacerts
),则默认密码为changeit
。
您可以在不需要密码的情况下列出密钥(即使它提示您),所以不要将其作为空白的指示。
(顺便说一下,Java历史上曾经更改过默认密钥库密码?他们应该把它留空。)
答案 1 :(得分:27)
将-storepass添加到keytool参数。
keytool -storepasswd -storepass '' -keystore mykeystore.jks
但是请注意,-list命令并不总是需要密码。我可以在两种情况下执行follow命令:无密码或有效密码
$JAVA_HOME/bin/keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts
答案 2 :(得分:1)
答案 3 :(得分:0)
这种方式更适合我:
echo y | keytool -storepasswd -storepass 123456 -keystore /tmp/IT-Root-CA.keystore -import -alias IT-Root-CA -file /etc/pki/ca-trust/source/anchors/IT-Root-CA.crt
机器运行:
[root@rhel80-68]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.1 (Ootpa)