在从Android开发中长时间休息后签署apk时,我很惊讶我无法再输入空密钥库密码来解锁它。它只是我还是以前有可能?如果是这样,那么什么时候改变了,我怎么能设法解锁密钥库呢?
一些背景:也许我只是疯了,以前没有使用空密码进入密钥库,但是我可以使用的唯一可能的密码也不起作用(我发誓,没有我有机会使用另一个密码!)。
答案 0 :(得分:8)
可以使用Java sdk中的keytool
来操纵密钥库。
尝试在密钥库上执行keytool,并使用空密码提取证书。之后,将其导入新的密钥库。这次,请使用真实密码。
开关-exportcert
将帮助您实现这一目标。
可能是您更新了java sdk,因此您无法输入空密码(由于该工具的某些安全性升级)。在这种情况下,您可以尝试安装较旧的sdk并执行上述操作。
祝你好运!答案 1 :(得分:5)
编写一个简单的Java SE程序而不是使用keytool程序,该程序厌倦了使用您的密钥或列出别名。 API 应该(不是100%)允许您使用空(""
)密码。您还可以尝试第三方工具,例如portecle来列出/提取密钥。
答案 2 :(得分:4)
尝试默认的android调试模式密钥库密码android
或java cacerts default changeit
/ changeme
。
答案 3 :(得分:3)
您不能为密钥库使用空密码。
我检查过,至于jdk 1.3 keytool不允许它,请参阅http://docs.oracle.com/javase/1.3/docs/tooldocs/win32/keytool.html doc明确指出:{/ p>
storepass 必须至少6个字符。必须将其提供给访问密钥库内容的所有命令。对于此类命令,如果命令行未提供-storepass选项,则会提示用户输入该命令。
为了好玩,我想从jdk 1.2尝试keytool并下载它,因为它的文档没有说明密码是强制性的,但我需要一个Windows NT盒来安装它! 我绝对不认为Android曾经使用过这个keytool版本。
很抱歉,但看起来你有:忘记了密码,或者用大写锁定/键盘布局错误输入了。 :(
编辑:
如果不是布局问题,您可以尝试
答案 4 :(得分:3)
我也面对这个问题而且非常奇怪。我有一个没有任何密码保护的遗留密钥库。我可以在SoapUI中成功使用它,但keytool
和keystore explorer无法打开它。我不得不创建一个已经有密码的新密钥库,从那以后一切都很好。
我怀疑Java 8比Java 7更挑剔。
keytool -importkeystore -srckeystore client.jks -destkeystore client2.jsk -srcstoretype JKS -deststoretype JKS -deststorepass changeit
答案 5 :(得分:1)
如果上述所有方法都失败了,您可以尝试破解它。相关问题:Android - Forgot keystore password. Can I decrypt keystore file?
答案 6 :(得分:0)
对我有用:
keytool -list -keystore keyStoreFileWithotPassword.jks -protected
更正:事实证明,列表功能可以正常运行,而无需输入实际密码!但是导入功能确实需要密码
答案 7 :(得分:0)
在尝试将密钥存储库提供程序用于hadoop时,我刚刚遇到了相同的问题,该提供程序使用none
作为默认密码,请参阅:JavaKeyStoreProvider.java
我最终从OpenJDK8复制了原始keytool,并删除了此新实现中的限制(相同,但没有6个字符的限制):KeytoolWithoutPasswordLimits
通过这种方式,我设法使用none
作为密码。