将密钥库密码从无密码更改为非空密码

2022-08-31 20:44:13

我有一个没有密码的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 

只是为了与所有人确认密码不是“更改”

keytool -storepasswd -keystore mykeystore.jks
Enter keystore password:  changeit
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect

任何想法,如果现有密码为空,我如何更改密钥库密码?


答案 1

如果您尝试使用 Java 缺省系统密钥库 () 执行操作,则缺省密码为 。cacertschangeit

您可以在不需要密码的情况下列出密钥(即使它提示您),因此不要将其视为空白的指示。

(顺便说一句,在Java的历史上,谁曾经更改过缺省密钥库密码?他们应该把它留空。


答案 2

将 -storepass 添加到 keytool 参数。

keytool -storepasswd -storepass '' -keystore mykeystore.jks

但也请注意,-list 命令并不总是需要密码。我可以在两种情况下执行以下命令:没有密码或有效密码

$JAVA_HOME/bin/keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts