Android开发:Keytool,创建密钥库?
我正试图为谷歌市场准备我的应用程序,但事实证明,这比预期的更具挑战性。我似乎不能完全理解应用程序签名的概念,但更具体地说,我的问题是,我已经安装了eclipse的keytool插件,但是当我想要创建一个证书时,它会要求我选择一个密钥库(输入文件名和密钥库密码),我不明白我应该作为文件输入什么,因为它实际上希望我通过浏览来选择文件,以及如何继续导出文件,所以很遗憾,谷歌没有给出非常好或明确的答案您需要提供新密钥库文件的位置和文件名,以防创建新的密钥库文件。或者,您可以选择“使用现有密钥库”并浏览到现有密钥库文件位置。Android开发:Keytool,创建密钥库?,android,eclipse,certificate,keystore,keytool,Android,Eclipse,Certificate,Keystore,Keytool,我正试图为谷歌市场准备我的应用程序,但事实证明,这比预期的更具挑战性。我似乎不能完全理解应用程序签名的概念,但更具体地说,我的问题是,我已经安装了eclipse的keytool插件,但是当我想要创建一个证书时,它会要求我选择一个密钥库(输入文件名和密钥库密码),我不明白我应该作为文件输入什么,因为它实际上希望我通过浏览来选择文件,以及如何继续导出文件,所以很遗憾,谷歌没有给出非常好或明确的答案您需要提供新密钥库文件的位置和文件名,以防创建新的密钥库文件。或者,您可以选择“使用现有密钥库”并浏览到
编辑:我想我会提供详细的答案。希望这些信息会有用 什么是签名以及为什么需要签名。 android使用的apk签名机制是一个应用于字节码和应用程序资源的示例,以确保:
- 完整性(下载后不会篡改您的应用程序)
- 真实性-你是向Google Play发布应用程序的人
- -使用提供的
对数据进行签名,并使用(即绑定到您的身份的公钥)验证数据私钥
- -管理
密钥库中的私钥和证书。
需要这些键jarsigner
jarsigner
手动签署应用程序或使用IDE导出已签署的应用程序(在引擎盖下使用keytool
和jarsigner
)后,您可以找到放置在已签名.apk存档的META-INF
目录中的签名相关文件:
- CERT.SF-包含应用程序组件和
- CERT.RSA(或.DSA)-上述文件的数字签名+验证此签名的公共证书。 你可以阅读更多关于唱歌的细节
<强>注释:在进行签名之前,请考虑重要的预发布步骤:日志/关键字符串文本删除、混淆等。
下面我将提供该过程的一些要点:生成您的私钥并将其放入java
keystore
。
如果没有密钥库,则可能需要先创建密钥库。创建密钥库
时,您需要创建密钥库密码
,该密码用于确保密钥库
数据的完整性(即,在有人(而不是您)向密钥库添加新证书后,您将被警告您的密钥库被篡改)。实际上,如果您保证密钥库
文件的安全,那么这个密码并不是非常重要的。如果有一天你忘了它,你可以逃之夭夭。生成
私钥
时,还将要求您创建私钥密码
,该密码将用于加密密钥库中的私钥这是您需要保留的非常重要的密码,因为它可以确保
- 你的私钥真的是私钥。最重要的是
- 如果没有此密码,您将无法使用您的私钥来签署和发布应用程序的未来更新
密钥库
文件中的私钥
对应用程序进行签名,并且您的.apk
将使用上述签名相关文件进行更新
一些重要术语:
Keystore只是一个二进制文件,以特定格式保存私钥/证书列表。它可以使用提供的API以编程方式访问。您的密钥库可以包含多个私钥条目,每个条目由其别名标识
在大多数情况下,您的密钥库
将有一个私钥,其中有一个与此私钥匹配的自签名证书
密钥库密码用于密钥库内容的完整性检查。
如果您丢失了此密码,但其中仍存储有私钥的密码,则可以通过运行以下cmd“克隆”密钥库并提供新的密钥库密码:
keytool-importkeystore-srckeystore
路径/to/keystore/with/遗忘/pw-destkeystore
路径/到/my/new/keystore
提供新密码,并将旧密钥库密码留空-您只会收到警告。然后,您可以使用新的密钥库并删除旧的密钥库。
还有其他方法可以在不使用密钥库密码的情况下检索私钥
私钥密码-保护(通过加密)私钥
内部密钥库
。它非常重要,因为它允许您访问私钥,以便为应用程序的更新签名。通常很难恢复
自签名证书-将您的身份(姓名/组织/电子邮件)绑定到公钥的非常简单的证书。此证书在签名操作期间添加到.apk
文件中,并将在安装前在用户设备上用于验证.apk
。它告诉我创建密钥库时出错,并关闭keytool窗口..:\嗯,错误日志非常长,您需要哪些部分