代码之家  ›  专栏  ›  技术社区  ›  Steve Haley

keystore和aliases-是否使用多个别名?

  •  18
  • Steve Haley  · 技术社区  · 16 年前

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

    根据 official guide about signing ,建议使用相同的证书对所有应用程序进行签名,以允许应用程序以模块化方式共享数据、代码和进行更新。

    假设“alias”、“key”和“certificate”在这个上下文中本质上是可互换的,那么有没有理由有人会这样做呢? 希望 为所有应用程序使用不同的别名?我能想到的唯一原因是它为您的应用程序增加了更多的安全性,从这个意义上说,一个被破坏的密钥/密码并不会破坏所有东西。还有其他原因吗?

    另外,生成的键是否依赖于别名的名称?换句话说,如果更改别名而不是密码,生成的证书会不同吗?

    3 回复  |  直到 9 年前
        1
  •  14
  •   Community Mohan Dere    9 年前

    如果我错了,请纠正我,但如果你能看到 this answer 对于类似的问题,您会看到证书确实依赖于您选择使用的特定“别名”(在密钥库中)。

    仔细阅读答案,您会发现“keystore”包含“alias”(实际上是private+public key对)。当您签署您的APK时,它是“公钥”,即嵌入的实际证书。

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

    唯一可以使用不同别名签名的方法是复制前面的别名,答案也表明了这一点。

    我还确认,使用不同别名(来自同一个密钥库)签署APK将生成不同的APK signing signatures 这应该证明不同的“别名”S=不同的证书。 How to get your signing sig (<-注意:我不知道跟踪是什么。他们引用的i方法是,我使用了log.i代替)

        2
  •  7
  •   Bruno Bronosky    13 年前

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

    摘录 Android - Signing Your Applications - Signing Strategies

    Android系统提供基于签名的权限强制, 以便应用程序可以向其他应用程序公开功能 用指定的证书签名的。通过签名多个 具有相同证书并使用基于签名的应用程序 权限检查,您的应用程序可以在 安全的方式。

        3
  •  3
  •   Bryan    14 年前

    我正在做一些测试,虽然您在密钥库中使用哪个密钥似乎很重要,但是更改密钥的别名和密钥库文件的名称对手持设备来说似乎并不重要。如果你好奇,我用我从这里得到的keytool iui更改了别名: http://code.google.com/p/keytool-iui/

    为了回答这个问题,我想说,如果你在一家大公司工作,有多个部门在编写自己的应用程序,这是很有用的。因此,威尔逊的小部件可以有一个wilson widgets.keystore的keystore,也可以有一个具有“小部件制造商”密钥的内部部门,一个具有“小部件交付”密钥的部门,以及另一个具有“hrdepartment”密钥的部门。每个部门都可以阻止另一个部门更新他们的应用程序,但是公司本身拥有存储在一个密钥库中的所有密钥,这些密钥库可以备份到一个位置。

    就我个人而言,我用不同的密钥签署每个应用程序,将它们全部存储在同一个密钥库中。我这样做的话,如果谷歌决定从我这里购买我的一个应用程序,我就可以断开这一把钥匙,把它交给他们,而不必把它们全部卖掉,也不必为其他应用程序重新生成钥匙。现实地说…我只是在浪费时间和精力… 叹息