2011-04-20 193 views
91

密钥库是实际证书还是别名证书?了解密钥库,证书和别名

如果我使用不同的别名签署我的应用程序,它会搅乱市场上的更新吗?或者我是否需要用另一个密钥库签署我的应用程序才能搞定?哪里可以查看别名信息?

回答

120

通过Keytool存储专用和公用密钥对生成的密钥存储文件。存储在密钥库中的每个对或条目都由唯一的别名引用。简而言之:

密钥仓库项=私有+公共密钥 对=由一个别名

密钥库保护其个人密码的每个私钥,并保护整个密钥仓库与完整性鉴定一个(可能不同的)密码。例如,当您使用Eclipse Android工具的导出签名应用程序包选项签署Android应用程序时,系统会要求您先选择一个密钥存储库,然后要求从该密钥存储库中选择一个别名/入口/对。为密钥库和所选别名提供密码后,应用程序将被签名,并且该别名的公钥(证书)将嵌入到APK中。

现在回答你的问题,你只能发布一个更新,是由具有相同的别名再次登录更新与别名“foo”签名的应用程序。丢失存储别名的密钥库会阻止您发布应用的更新版本。

然而有签订了新别名的应用程序的方式,但它涉及克隆使用密钥库中现有的别名keytool -keyclone

创建一个新的密钥仓库项,其中 具有相同私钥和 证书链作为原始 条目。

原始条目由 别名标识(如果未提供 ,则默认为“mykey”)。新的(目标) 条目由dest_alias标识。如果没有 目标别名在 提供的命令行,则提示用户 它。

如果私钥密码是 从密钥库密码不同, 则该条目将仅 有效的keypass提供克隆。这是 用于保护与别名关联的私钥的密码。如果 在 命令行中没有提供密钥密码,并且私钥 密码与 密钥存储区密码不同,则用户需要 提示输入该密码。在 复制项的私钥可以与 来保护不同的密码,如果需要的话。如果 在 命令行中没有提供新的选项,则会提示用户输入 新条目的密码(并且可能 选择让它与 克隆条目的私钥相同)。

的更多信息:

http://download.oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html

http://developer.android.com/guide/publishing/app-signing.html

+3

的开发站点建议使用所有的应用程序相同的证书。那么这是否意味着,只要我使用相同的密钥库,我可以使用任何带有任何密码的别名,并且不会搞乱更新,因为它只是一个参考?实际的密钥库是重要的部分? – Roger 2011-04-20 02:39:09

+1

我重写了我的答案,以便更准确。简而言之,您必须确实使用相同的别名来签署应用程序的所有更新。 – 2011-04-20 02:52:11

+2

@Julio那么最好的做法是使用相同的别名为你想发布的所有不同的应用程序,因为开发网站建议?我没有看到为所有应用程序创建单独别名的理由。 – 2011-08-31 00:08:20

相关问题