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


191

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

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版本中存在一些问题。我在同事计算机上运行了相同的命令,并且运行正常。

请分享您的意见。


1
您输入的密码正确吗?并从正确的目录运行命令?
dev2d

1
在创建密码时,我要输入一个新密码。应该从哪个目录运行它?
C4CodeE4Exe

keytool -genkeypair -alias tomcat -keyalg RSA -keystore D:\ keystore.jks尝试使用此方法生成密钥库,然后像certool -export -alias mycert -keystore D:\ keystore.jks -file vorburger.cer一样导出cer
dev2d

您能否澄清一下,它的效果是否与“ keytool -genkey -alias tomcat -keyalg RSA”相同。
C4CodeE4Exe

你能告诉我产生这个cer的目的吗?
dev2d

Answers:


89

根据您的描述,我假设您在Windows计算机上并且您的住所是abc

所以现在:原因

当您运行此命令时

keytool -genkey -alias tomcat -keyalg RSA

因为您未指定显式密钥库,它会尝试生成(并且在您遇到异常的情况下进行更新)C:\users\abc>.keystore,当然,您需要为.keystore提供旧密码,而我相信您正在提供版本(新的一个)。

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

  2. 或尝试使用以下命令来创建新的xyzkeystore:

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

注意: 虽然两者都可以正常工作,但-genkey现在还是比较旧了-genkeypair


虽然我自己想了。“从C:\ users \ abc>位置删除.keystore并尝试命令”是正确的解决方案。
C4CodeE4Exe

是否可以在参数中传递密钥库密码?
user1767754

2
我已经删除了现有的密钥库文件,然后按照命令keytool -genkey -alias key0-keyalg RSA进行操作,然后它询问了我提供的新密码和其他数据。但是现在,当我尝试构建签名的apk时,它会显示相同的错误消息-“密钥库被篡改,或者密码错误”,这是什么问题?

265

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


哈哈..所以实际上它不会将密码更改为新密码,并且默认工作是:D
Muhammad Suleman

谢谢:) ..它曾在我的end..and我所用的密码,我用导出.CER文件..
Danyal Sandeelo

为我工作。谢谢!
colefner '19

157

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

空密码在我的mac中工作。(将以下行粘贴到终端中)

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

当提示

Enter keystore password:  

只需按Enter键(请勿输入任何内容)。

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

同样适用于MacOS Sierra 10.10+。

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


1
谢谢。它可以在我的Windows 10上用于调试密钥库
Vinayak Singh

11

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

这个命令终于对我有用(有码头):

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

11

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


1
感谢您指出密码的来源!:)
N00b Pr0grammer



4

在Windows上工作

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

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

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

然后输入以下命令

  1. keytool -list -keystore“ C:/ Documents and Settings /您的名字/.android/debug.keystore”

然后,它将立即要求输入密钥库密码。默认密码是“ android”类型,然后输入或直接输入“ DONT TYPE ANY PASSWORD”。


3

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


0

总结来自此页面的建议,我完成了以下工作:

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

然后,我遇到了一系列有关别名的名称,组织,位置和密码的问题。


0

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

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


1
第一个路径“ C:\ MyWorks \ mykeystore”不是密钥库。
Jorgesys


0

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


0
 [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>

注意:-在Export Pasworrd上方,在任何地方写下,因为必须创建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".


0

如果您正在按照本指南进行Flutter应用程序签名,请执行以下操作:生成并发布Android应用程序,然后执行此错误。希望这个答案对您有所帮助。

就我而言,我更改了存储key.jks的路径。这发生在我身上,因为我在该路径中已有一个文件。

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

此命令将key.jks文件存储在主目录中。要将其存储在其他位置,请更改传递给-keystore参数的参数。

就我而言

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

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

然后,系统将提示您输入keystore password:重新输入新密码:。您可以在此处使用所需的任何密码。

但是,请将密钥库文件保持私有状态;不要将其检入公共源代码控制中!


0

以我的Xamarin Forms 4.7和Visual Studio 2019 16.7.0 Preview 3.1为例,问题是最近更新的Android Build工具(apksigner)和JDK的版本不匹配。将JDK更新到最新版本,并在“工具”->“选项”->“ Xamarin”->“ Android设置”中指向新的JDK路径,并且可以使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.