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

Mat*_*ley 43 java ssl openssl keytool

我有一个没有密码的jks密钥库.当我运行命令

keytool -list -keystore mykeystore.jks
Run Code Online (Sandbox Code Playgroud)

它提示我输入密钥库密码,我只需点击"输入"即可.

请注意,密钥库密码不是'changeit'的默认java密码.这是空白的

当我试图跑

keytool -storepasswd -keystore mykeystore.jks
Run Code Online (Sandbox Code Playgroud)

将密码更改为非空字符串.它第一次提示我输入当前密码.只需点击输入,因为它是空白说

keytool -storepasswd -keystore mykeystore.jks
Enter keystore password:
Keystore password is too short - must be at least 6 characters 
Run Code Online (Sandbox Code Playgroud)

只是为了与大家确认密码不是'changeit'

keytool -storepasswd -keystore mykeystore.jks
Enter keystore password:  changeit
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
Run Code Online (Sandbox Code Playgroud)

如果现有密码为空,我知道如何更改密钥库密码?

Tim*_*mmm 71

如果您正在尝试使用Java默认系统密钥库(cacerts),那么默认密码是changeit.

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

(顺便说一句,Java历史上曾经更改过默认密钥库密码的人?他们应该把它留空.)

  • 挽救了我的一天:“您无需密码就可以列出密钥”:我发现我们总是可以从任何`keystore`文件中读取`Certificate Entry`,而无需输入`keystore`密码 (2认同)
  • 当我输入空白时,列表有效,但当我输入changeit时则无效,这让我想起询问我的提示是什么 (2认同)

小智 31

将-storepass添加到keytool参数.

keytool -storepasswd -storepass '' -keystore mykeystore.jks
Run Code Online (Sandbox Code Playgroud)

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

$JAVA_HOME/bin/keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts
Run Code Online (Sandbox Code Playgroud)

  • 这对我不起'keytool -storepasswd -storepass'' - keystore mykeystore.jks'= keytool error:java.io.IOException:Keystore被篡改,或者密码不正确 (26认同)
  • 感谢您的答复.密码确实不是空白!关于-list命令不需要密码,我不知道. (3认同)
  • @theMarceloR 您的密码实际上可能不是空的。 (2认同)