在本地计算机上生成证书时出现以下错误。
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 版本存在一些问题。我在同事的机器上运行了相同的命令,它工作正常。
请分享您的意见。
我通过使用 cacerts keystore 的默认密码解决了这个问题:'changeit'
空密码在我的 mac 中工作。(在终端粘贴下面的行)
keytool -list -v -keystore ~/.android/debug.keystore
当它提示
Enter keystore password:
只需按输入按钮(不要输入任何内容)。它应该可以工作。
请确保它用于默认debug.keystore
文件,而不是用于基于项目的密钥库文件(密码可能会更改)。
也适用于 MacOS Sierra 10.10+。
我听说,它也适用于 linux 环境。我还没有在linux中测试过。
根据你的描述,我假设你在 windows 机器上,你的家是 abc
所以现在:原因
当你运行这个命令
keytool -genkey -alias tomcat -keyalg RSA
因为您没有指定显式密钥库,它会尝试生成(在您的情况下,您会遇到异常以便更新)密钥库C:\users\abc>.keystore
,当然您需要为 .keystore 提供旧密码,而我相信您正在提供您的版本(a新的一个)。
解决方案
.keystore
从位置删除C:\users\abc>
并尝试命令
或尝试以下命令,该命令将创建一个新的 xyzkeystore:
keytool -genkey -keystore xyzkeystore -alias tomcat -keyalg RSA
注意: -genkey
现在很旧,而使用-genkeypair
虽然两者都同样有效。
我已经通过使用默认密码“ changeit ”解决了这个问题。
使用 changeit 作为密码也很重要。
这个命令终于对我有用(使用码头):
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查看所有属性
在 Windows 上工作
打开命令提示符(按 Windows 键 + R,然后在出现的对话框中键入不带引号的“cmd”,然后按 Enter 键)。
然后在下面键入代码嗅探:
然后输入以下命令
然后它现在会要求输入密钥库密码。默认密码是“android”类型并输入或直接输入“DONT TYPE ANY PASSWORD”。
检查您的主文件夹~/.gradle/gradle.properties
。有时,如果您gradle.properties
在主目录中,它会从那里获取详细信息。您可以更改它或删除文件。然后它将从您的本地文件夹中获取所需的详细信息。
如果您正在按照本指南对 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 - 文件夹名称
然后将提示您输入密钥库密码: 和重新输入新密码:。在这里,您可以使用任何您想要的密码。
但是,请将密钥库文件保密;不要将其签入公共源代码管理!
空密码在我的 Mac 上为我工作
keytool -list -v -keystore ~/.android/debug.keystore
点击 Enter 然后它会显示给你
Enter keystore password:
在这里只需按 Enter 输入空密码
总结此页面的建议,我完成了以下内容:
keytool -genkeypair -keystore ~/.android/release.keystore -alias <my_alias> -storepass <my_cert_pass> -keyalg RSA
然后我收到了一系列关于我的别名的姓名、组织、位置和密码的问题。
我通过删除输出文件并再次运行命令来解决此问题。事实证明它不会覆盖以前的文件。我在用 tomcat 更新 let's encrypt cert 时遇到了这个问题
对我来说,我通过将密码从阿拉伯字母更改为英文字母来解决它,但首先我进入文件夹并删除了生成的密钥,然后它就可以工作了。
在我使用 Xamarin Forms 4.7 和 Visual Studio 2019 16.7.0 Preview 3.1 的情况下,问题是最近更新的 Android 构建工具 (apksigner) 和 JDK 的版本不匹配。将 JDK 更新为最新,并在 Tools->Options->Xamarin->Android Settings 上指出新的 JDK 路径,它可以工作。
keytool 错误:java.io.IOException:密钥库被篡改,或密码不正确
当我将密钥库路径C:\MyWorks\mykeystore 更改为C:\MyWorks \mykeystore.keystore时,我解决了我的问题。
就我而言,我需要root
访问。
[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".
刚刚从 4.0 升级到 Android Studio 4.2。显然,Android Studio 默默地更改了我的密钥库密码,该密码一直原封不动地坐在那里,并且完美地运行了一年多没有发生任何事故。
只需要重新租用两个密码。
叹
如果您已经有.store
文件,则必须使用与生成文件相同的密码。所以在我的情况下,解决方案是:
rm *.store
rm *.cer
这对您来说可能听起来很奇怪,但我只是想了解keytool
并控制我的教程文件的源代码并稍后重新运行它们!
你有两个选择:
cmd 在输入时不会在屏幕上显示密码,
因此只需输入正确的密码 - 并小心 - 然后按 Enter。
或者 只是使用:
keytool -list -keystore 'keystoreName' -storepass 'type your keystore passwd'
对于 Keys 的完整信息,请添加-v
:
keytool -v -list -keystore 'keystoreName' -storepass 'type your keystore passwd'