244

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

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

请分享您的意见。

4

21 回答 21

363

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

于 2014-04-01T09:40:04.880 回答
204

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

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

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

当它提示

Enter keystore password:  

只需按输入按钮(不要输入任何内容)。它应该可以工作。

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

也适用于 MacOS Sierra 10.10+。

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

于 2015-11-09T06:12:55.803 回答
97

根据你的描述,我假设你在 windows 机器上,你的家是 abc

所以现在:原因

当你运行这个命令

keytool -genkey -alias tomcat -keyalg RSA

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

解决方案

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

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

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

注意: -genkey现在很旧,而使用-genkeypair虽然两者都同样有效。

于 2013-06-07T15:03:16.663 回答
26

调试密钥库的默认密码是android.

在此处输入图像描述

于 2019-09-02T19:46:49.633 回答
18

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

于 2019-08-24T06:48:38.097 回答
15

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

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

 keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass changeit -validity 360 -keysize 2048
于 2015-04-10T23:37:00.140 回答
15

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

于 2017-04-19T11:10:46.523 回答
5

在 Windows 上工作

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

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

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

然后输入以下命令

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

然后它现在会要求输入密钥库密码。默认密码是“android”类型并输入或直接输入“DONT TYPE ANY PASSWORD”。

于 2018-05-26T07:39:12.827 回答
4

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

于 2017-12-13T14:57:26.197 回答
4

如果您正在按照本指南对 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

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

然后将提示您输入密钥库密码:重新输入新密码:。在这里,您可以使用任何您想要的密码。

但是,请将密钥库文件保密;不要将其签入公共源代码管理!

于 2020-05-15T14:11:03.387 回答
3

空密码在我的 Mac 上为我工作

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

点击 Enter 然后它会显示给你

Enter keystore password:  

在这里只需按 Enter 输入空密码

于 2021-02-10T09:10:11.050 回答
2

总结此页面的建议,我完成了以下内容:

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

然后我收到了一系列关于我的别名的姓名、组织、位置和密码的问题。

于 2015-09-24T00:54:18.757 回答
2

我通过删除输出文件并再次运行命令来解决此问题。事实证明它不会覆盖以前的文件。我在用 tomcat 更新 let's encrypt cert 时遇到了这个问题

于 2018-08-10T21:10:39.213 回答
2

对我来说,我通过将密码从阿拉伯字母更改为英文字母来解决它,但首先我进入文件夹并删除了生成的密钥,然后它就可以工作了。

于 2019-07-21T00:04:23.800 回答
2

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

于 2020-06-28T11:38:11.247 回答
1

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

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

于 2015-12-11T06:08:19.797 回答
1

就我而言,我需要root访问。

于 2018-06-26T16:19:39.710 回答
1
 [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 Paswordd 写在任何地方,因为它必须创建 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".
于 2018-10-11T05:36:12.157 回答
0

刚刚从 4.0 升级到 Android Studio 4.2。显然,Android Studio 默默地更改了我的密钥库密码,该密码一直原封不动地坐在那里,并且完美地运行了一年多没有发生任何事故。

只需要重新租用两个密码。

于 2021-07-07T20:16:56.047 回答
0

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

rm *.store
rm *.cer

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

于 2021-11-20T02:53:06.013 回答
0

你有两个选择:

cmd 在输入时不会在屏幕上显示密码,
因此只需输入正确的密码 - 并小心 - 然后按 Enter。

或者 只是使用:

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

对于 Keys 的完整信息,请添加-v

keytool -v -list -keystore 'keystoreName' -storepass 'type your keystore passwd'
于 2022-01-24T16:30:44.903 回答