keytool错误密钥库被篡改,或者密码不正确

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

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版本中有一些问题。我在我的同事机器上运行相同的命令,它工作正常。

请分享你的投入。

从你的描述,我假设你在Windows机器上,你的家是abc

所以现在:原因

当你运行这个命令

keytool -genkey -alias tomcat -keyalg RSA

因为你没有指定一个明确的密钥库,它会尝试生成(在你的情况下,因为你是例外,所以要更新)密钥库C:\users\abc>.keystore ,当然你需要提供.keystore的旧密码我相信你正在提供你的版本(一个新的)。

  1. C:\users\abc> location中删除.keystore并尝试该命令

  2. 或者尝试下面的命令来创build一个新的xyzkeystore:

    keytool -genkey -keystore xyzkeystore -alias tomcat -keyalg RSA

注意: -genkey现在比较老,宁愿使用-genkeypair尽pipe两者同样适用。

我通过使用cacerts keystore的默认密码来解决它: 'changeit'

这个答案将有助于新的Mac用户(适用于Linux,Windows 7 64位)。

空密码工作在我的Mac。 (在terminal粘贴下面的行)

 keytool -list -v -keystore ~/.android/debug.keystore 

当它提示

 Enter keystore password: 

只需按下inputbutton(不要input任何东西)。它应该工作。

请确保它的默认debug.keystore文件,而不是您的基于项目的密钥库文件(密码可能会改变这一点)。

MacOS Sierra 10.10+也能正常工作。

我听说,它也适用于Linux环境。 我还没有在linux中testing过。

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

这个命令终于为我工作(与docker):

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

在tomcat 8.5中注意写出正确的属性名称。 这是我在server.xml上的代码:

 <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="conf/keystore" certificateKeystorePassword="mypassword" type="RSA"/> </SSLHostConfig> </Connector> 

您可以访问https://tomcat.apache.org/tomcat-8.5-doc/config/http.html查看所有属性;

总结来自这个页面的build议,我完成了以下内容:

 keytool -genkeypair -keystore ~/.android/release.keystore -alias <my_alias> -storepass <my_cert_pass> -keyalg RSA 

然后,我得到了一组关于别名的名称,组织,位置和密码的问题。

keytool错误:java.io.IOException:密钥库被篡改,或者密码不正确

当我将密钥库pathC:\ MyWorks \ mykeystore更改C:\ MyWorks \ mykeystore.keystore时,我解决了我的问题。