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

时间:2013-06-03 06:36:32

标签: java keystore

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

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

请分享您的意见。

19 个答案:

答案 0 :(得分:197)

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

答案 1 :(得分:114)

这个答案对新用户有用(适用于Linux,也适用于Window 7 64位)。

空密码在我的mac中运行。 (在终端粘贴以下行)

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

提示

Enter keystore password:  

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

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

适用于MacOS Sierra 10.10+。

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

答案 2 :(得分:77)

根据您的描述,我假设您使用的是Windows机器,而您的家是abc

所以现在:原因

运行此命令时

keytool -genkey -alias tomcat -keyalg RSA

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

<强>解决方案

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

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

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

  3. 注意: -genkey现在已经过时而不是使用-genkeypair,但两者同样有效。

答案 3 :(得分:7)

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

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

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

答案 4 :(得分:7)

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

答案 5 :(得分:4)

适用于Windows

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

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

  1. cd C:\ Program Files \ Java \ jdk1.7.0_25 \ bin
  2. 然后输入以下命令

    1. keytool -list -keystore“C:/ Documents and Settings / Your Name / .android / debug.keystore”
    2. 然后它会立即询问密钥库密码。默认密码是 “android”键入并输入或只需输入“DONT TYPE ANY PASSWORD”。

答案 6 :(得分:3)

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

答案 7 :(得分:2)

空密码在我的 Mac 上对我有用

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

按回车键,然后显示给你

Enter keystore password:  

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

答案 8 :(得分:2)

答案 9 :(得分:2)

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

答案 10 :(得分:1)

如果您正在按照本指南Build and release an Android app来签署Flutter App,并遇到此错误。希望这个答案对您有所帮助。

就我而言,我更改了存储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 -文件夹名

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

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

答案 11 :(得分:0)

刚刚从 4.0 升级到 Android Studio 4.2。显然,Android Studio 悄悄地更改了我的密钥库密码,该密码在一年多的时间里一直保持不变并且完美运行,没有发生任何事故。

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

叹息

答案 12 :(得分:0)

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

答案 13 :(得分:0)

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

答案 14 :(得分: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".

答案 15 :(得分:0)

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

答案 16 :(得分:0)

就我而言,我需要具有root访问权限。

答案 17 :(得分:0)

  

keytool错误:java.io.IOException:Keystore被篡改,或密码错误

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

答案 18 :(得分:0)

总结本页的建议,我完成了以下工作:

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

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