25

在与 Android 开发长期休息后签署 apk 时,我很惊讶我无法再输入一个空的密钥库密码来解锁它。是我一个人还是以前有可能?如果是这样,那是什么时候发生的变化,我怎么能设法解锁密钥库?

一些背景:也许我只是疯了,之前没有为密钥库使用空密码,但是我可以使用的唯一可能的密码也不起作用(我发誓,我没有机会' d 使用了另一个密码!)。

4

8 回答 8

11

keytool可以使用Java sdk 中的来操作密钥库。

尝试在您的密钥库上执行 keytool,并使用空密码提取证书。之后,将其导入新的密钥库。这一次,使用真正的密码。

开关-exportcert将帮助您实现这一目标。

可能是您更新了 java sdk,因此您无法输入空密码(由于该工具的某些安全升级)。在这种情况下,您可以尝试安装较旧的 sdk 并执行上述操作。

祝你好运!

于 2012-10-14T19:34:13.163 回答
5

您不能对密钥库使用空密码。

我检查过,只要 jdk 1.3 keytool 不允许,请参阅http://docs.oracle.com/javase/1.3/docs/tooldocs/win32/keytool.html文档明确指出:

storepass必须至少有 6 个字符长。它必须提供给访问密钥库内容的所有命令。对于此类命令,如果未在命令行中提供 -storepass 选项,则会提示用户输入该选项。

为了好玩,我想尝试 jdk 1.2 中的 keytool 并下载它,因为它的文档没有说明密码是强制性的,但我需要一个 Windows NT 盒子来安装它!我绝对不认为 Android 曾经使用过这个 keytool 版本。

抱歉,您的密码似乎是:忘记了密码,或者使用大写锁定输入密码/激活了错误的键盘布局。:(

编辑:

如果不是布局问题,您可以尝试

于 2012-10-16T14:49:55.860 回答
5

您可以编写一个简单的 Java SE 程序来尝试使用您的密钥或列出别名,而不是使用 keytool。API应该(不是 100%)允许您使用空 ( "") 密码。

您还可以尝试使用portecle等第三方工具来列出/提取密钥。

于 2012-10-17T03:31:51.270 回答
4

尝试默认的android调试模式密钥库密码android或java cacerts默认changeit/changeme

于 2012-10-16T20:02:21.877 回答
3

我也遇到了这个问题,这很奇怪。我有一个不受任何密码保护的旧密钥库。我可以在 SoapUI 中成功使用它,但keytool密钥库资源管理器无法打开它。我必须创建已经有密码的新密钥库,从那时起一切都很好。

我怀疑 Java 8 比 Java 7 更挑剔。

keytool -importkeystore -srckeystore client.jks -destkeystore client2.jsk -srcstoretype JKS -deststoretype JKS -deststorepass changeit
于 2016-10-19T11:24:43.233 回答
2

我在尝试使用none作为默认密码的 hadoop 的密钥存储提供程序时遇到了同样的问题,请参阅:JavaKeyStoreProvider.java

我最终从 OpenJDK8 复制了原始keytool并删除了这个新实现中的限制(它是相同的,但没有 6 个字符的限制):KeytoolWithoutPasswordLimits

这样,我设法将其none用作密码。

于 2020-06-17T03:59:39.583 回答
1

如果以上所有方法都失败了,您可以尝试破解它。相关问题:Android - 忘记密钥库密码。我可以解密密钥库文件吗?

于 2012-10-16T20:19:32.340 回答
0

这对我行得通:

keytool -list -keystore keyStoreFileWithotPassword.jks -protected

更正:事实证明列表功能无需输入实际密码即可工作!但是导入功能确实需要密码

于 2019-06-01T15:18:13.417 回答