我在本地机器上生成证书时出现以下错误。

C:\Users\abc>keytool -genkey -alias tomcat -keyalg RSA
Enter keystore password:
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect

我认为jdk版本有一些问题。我在我同事的机器上运行了同样的命令,它工作得很好。

请分享你的意见。


当前回答

如果您已经有了.store文件,则必须使用与生成该文件时相同的密码。所以我的解决方案是:

rm *.store
rm *.cer

这可能听起来很奇怪,但我只是想了解keytool和我的源代码控制我的教程文件和重新运行他们以后!

其他回答

在我的情况下,我需要有根访问权限。

对我来说,我通过将密码从阿拉伯字母改为英语字母来解决这个问题,但首先我去文件夹并删除生成的密钥,然后它就工作了。

使用changeit作为密码也很重要。

这个命令终于对我有用了(使用jetty):

 keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass changeit -validity 360 -keysize 2048

从你的描述中,我假设你用的是windows机器,你的家是abc

所以现在:原因

执行此命令时

keytool -genkey -alias tomcat -keyalg RSA

因为您没有指定显式的密钥存储库,它将尝试生成(在您的情况下,当您获得异常以便更新)密钥存储库C:\users\abc>。当然,您需要为.keystore提供旧密码,而我相信您正在提供您的版本(一个新版本)。

解决方案

删除C:\users\abc>目录下的.keystore,然后尝试执行该命令 或者尝试下面的命令,它将创建一个新的xyzkeystore: keytool -genkey -keystore xyzkeystore -alias tomcat -keyalg RSA . xml

注意:-genkey已经过时了,应该使用-genkeypair,尽管这两个功能相同。

使用openjdk时,我也遇到了同样的问题。 当我把openjdk更新到“11.0.17”后,这个问题就消失了。