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

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

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版本有一些问题。我在我同事的机器上运行了同样的命令,它工作得很好。

请分享你的意见。

595692 次浏览

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

所以现在:原因

执行此命令时

keytool -genkey -alias tomcat -keyalg RSA

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

解决方案

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

  2. 或尝试以下命令,将创建一个新的xyzkeystore:

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

注意: -genkey是旧的,现在宁愿使用-genkeypair,尽管两者工作相同。

我通过使用cacerts密钥库的默认密码:'changeit'来解决这个问题

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

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

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

总结这一页的建议,我总结出如下内容:

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

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

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

空密码在我的mac上工作。(在终端粘贴以下一行)

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

当它提示

Enter keystore password:

只要按回车键(不要输入任何东西)。它应该会起作用。

请确保它是默认的debug.keystore文件,而不是基于项目的keystore文件(密码可能会因此改变)。

也适用于MacOS Sierra 10.10+。

我听说,它也适用于linux环境。我还没有在Linux中进行测试。

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

当我将密钥库路径C: \ mywork \ mykeystore更改为C: \ mywork \ mykeystore.keystore时,我解决了我的问题。

在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来查看所有属性

检查你的主文件夹~/.gradle/gradle.properties。有时如果你在主目录中有gradle.properties,它会从那里获取细节。你可以改变它或者删除文件。然后它将从您的本地文件夹中获取所需的详细信息。

适用于Windows

打开命令提示符(按Windows键+ R,然后在出现的对话框中输入“cmd”,不带引号,然后按Enter键)。

然后输入下面的代码嗅探:

  1. cd C:\Program Files\Java\ jdk1.7.0_25\bin

然后输入以下命令

  1. "C:/Documents and Settings/Your Name/.android/debug.keystore"

那么它现在将要求Keystore密码。默认密码为

. "android"输入或者直接输入" don ' t type ANY PASSWORD"

在我的情况下,我需要有root访问。

我通过删除输出文件并再次运行该命令来修复此问题。事实证明,它不会覆盖之前的文件。我在更新一个让我们用tomcat加密证书时遇到了这个问题

 [root@localhost Certificate]# openssl pkcs12 -export -in
/opt/Certificate/115c99f4c5aa98f5.crt -inkey /opt/Certificate/ravi.in.key -certfile
/opt/Certificate/gd_bundle-g2-g1.crt -out RaviNew.p12


Enter Export Password: <Password>
Verifying - Enter Export Password: <Password>

导出密码写在任何地方,因为它是必须创建JKS文件(这是取决于你的选择你想做什么密码)

  keytool -importkeystore -srckeystore DigiEduNew.p12 -srcstoretype pkcs12 -destkeystore finaldigiEdu.jks -deststoretype JKS
Importing keystore DigiEduNew.p12 to finaldigiEdu.jks...
Enter destination keystore password: <Any Password >
Re-enter new password: <Any Password >
Enter source keystore password: <.P12 Password >
Entry for alias 1 successfully imported.
Import command completed:  1 entries successfully imported, 0 entries failed or
cancelled






Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12
which is an industry standard format using "keytool -importkeystore -srckeystore
finaldigiEdu.jks -destkeystore finaldigiEdu.jks -deststoretype pkcs12".

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

我已经通过使用默认密码“changeit”解决了这个问题。

如果您正在按照以下指南开发并发布一款Android应用为您的Flutter应用程序签名,并遇到此错误。我希望这个答案能帮到你。

在我的例子中,我改变了存储我的key.jks的路径。这发生在我身上,因为我在那个路径中有一个现有的文件。

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

该命令存储密钥。JKS文件在您的主目录。要将其存储在其他地方,请更改传递给-keystore参数的参数。

就我而言,

keytool -genkey -v -keystore /Users/Y/Desktop/X/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias keyYour

Y -用户名和X -文件夹名

然后你会被提示输入keystore密码:重新输入新密码:。在这里你可以使用任何你想要的密码。

但是,要保持keystore文件的私密性;不要把它签入公共源代码控制!

在我使用Xamarin Forms 4.7和Visual Studio 2019 16.7.0 Preview 3.1的情况下,问题是最近更新的Android构建工具(apksigner)和JDK的版本不匹配。将JDK更新到最新,并在Tools->Options->Xamarin->Android Settings上指出了新的JDK路径,并且它工作了。

在我的Mac上,空密码是可行的

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

按回车键,就会显示出来

Enter keystore password:

在这里,只要按Enter键就可以获得空密码

刚从4.0升级到Android Studio 4.2。显然,Android Studio默默地改变了我的密钥库密码,它已经坐在那里没有改变,完美地工作了一年多。

只是重新租了两个密码。

叹息

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

rm *.store
rm *.cer

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

你有两个选择:

cmd输入
时屏幕上不显示密码 所以只要输入正确的passwd -小心-然后按enter

< >强或 只使用:< / p >

keytool -list -keystore 'keystoreName' -storepass 'type your keystore passwd'

而且为键的完整信息,添加-v:

keytool -v -list -keystore 'keystoreName' -storepass 'type your keystore passwd'

这个答案对于那些在不同项目中管理多个密钥存储库的人很有帮助。

我有同样的错误,我注意到我正在使用一个文件keystore.jks与另一个keystore.jks的密码,这引发了这个异常,因为密码不匹配。