密钥库和别名 – 有多个别名的用法吗?

使用Eclipse导出已签名的Android应用程序时,是否有使用多个别名的目的?

根据有关签名的官方指南 ,build议您使用相同的证书签署所有应用程序,以允许您的应用程序共享数据,代码并以模块化方式进行更新。

假设“别名”,“密钥”和“证书”在本质上基本上是可以互换的,那么为什么有人会希望为所有应用程序使用不同的别名? 我能想到的唯一原因是它为您的应用程序增加了更多的安全性,因为一个被泄露的密钥/密码不会影响一切。 还有其他的原因吗?

另外,生成的密钥是否取决于别名的名称? 换句话说,如果您更改别名的名称而不更改密码,生成的证书是否会有所不同?

Solutions Collecting From Web of "密钥库和别名 – 有多个别名的用法吗?"

纠正我,如果我错了,但如果你会看到这个答案类似的问题,你会看到证书确实取决于你select签署的特定“别名”(在你的密钥库中)。

仔细阅读答案,你会发现“keystore”包含“别名”(实际上是私人+公共密钥对)。 当你签署你的apk时,它就是被embedded的实际证书的“公钥”。

因此,更新您的应用程序时,应始终使用相同的“别名”,而不只是相同的“密钥库”。 至于为什么开发者在他们的密钥库中会有多个“别名”,除了你和其他人所说的,我不确定这个好处。

而唯一可以用不同的别名签名的方法就是克隆前面的一个,就像答案所暗示的那样。

我也确认,用不同的别名(来自同一个密钥库) 签名 APK将生成不同的APK 签名签名 ,这应该certificate不同的“别名”=不同的证书。 如何获得你的签名sig (< – 注意:我不知道他们引用的Trace.i方法是什么,我用Log.i代替)

请注意,通过使用不同的密钥对应用程序进行签名,您将牺牲应用程序之间的“基于签名的权限”互操作性。

摘录自Android – 签署您的应用程序 – 签署战略

Android系统提供基于签名的权限执行,以便应用程序可以向另一个使用指定证书签名的应用程序公开function。 通过使用相同证书签署多个应用程序并使用基于签名的权限检查,您的应用程序可以以安全的方式共享代码和数据。

我正在进行一些testing,尽pipe密钥库中使用哪个密钥似乎很重要,但更改密钥的别名和密钥库文件的名称对于手机来说似乎并不重要。 如果您好奇,我使用keytool-iui更改了别名: http : //code.google.com/p/keytool-iui/

要回答OP,我想说如果你在一个有多个部门编写自己的应用程序的大公司工作,这是有用的。 因此,威尔森的小工具可以有一个wilsonwidgets.keystore的密钥仓库,可能有一个内部部门有一个“widgetmakers”键,一个部门有一个“widgetdelivery”键,另一个部门有一个“hrdepartment”键。 每个部门可以阻止其他部门更新他们的应用程序,但是公司本身将所有密钥存储在一个可以备份到一个位置的密钥库中。

就个人而言,我使用不同的密钥对每个应用程序进行签名,将它们全部存储在同一个密钥库中。 我这样做,所以如果谷歌决定从我这里购买我的一个应用程序,我可以把这个关键字分开给他们,而不必把它们全卖掉或者为其他应用程序重新生成密钥。 实际上……我只是在浪费时间和精力…… 感叹