密钥库和别名 - 多个别名有用吗?

Ste*_*ley 19 eclipse android keystore google-play

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

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

假设"别名","密钥"和"证书"在这种情况下基本上是可以互换的,是否有人想要为所有应用程序使用不同的别名?我能想到的唯一原因是它为您的应用程序增加了更多的安全性,因为受损的密钥/密码不会危及所有内容.还有其他原因吗?

此外,生成的密钥是否依赖于别名的名称?换句话说,如果更改别名但不更改密码,生成的证书是否会有所不同?

Ton*_*han 15

如果我错了,请纠正我,但如果您看到类似问题的答案,您会看到证书确实取决于您选择签署的特定"别名"(在您的密钥库中).

仔细阅读答案,你会发现"密钥库"包含"别名"(实际上是私有+公钥对).当您为apk签名时,它是"公钥",即嵌入的实际证书.

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

而且你可以使用不同的别名签名的唯一方法是克隆前一个,因为答案也是如此.

我还确认,使用不同别名(来自同一个密钥库)签署 APK将生成不同的APK 签名签名,这应该证明不同的"别名"=不同的证书.如何获取签名签名(< - 注意:我不知道他们引用的Trace.i方法是什么,我使用的是Log.i)


Bru*_*sky 8

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

摘自Android - 签署您的应用程序 - 签名策略

Android系统提供基于签名的权限实施,以便应用程序可以将功能公开给使用指定证书签名的另一个应用程序.通过使用相同证书对多个应用程序进行签名并使用基于签名的权限检查,您的应用程序可以以安全的方式共享代码和数据.