AndroidKeystore应用程序是特定的还是特定于设备的?

时间:2017-12-26 13:49:37

标签: java android

我只是想问一下,用于存储密钥对的AndroidKeystore API是特定于设备还是特定于应用程序。我想询问两个使用AndroidKeyStore的应用程序是否存储其密钥对,然后两个应用程序的信息将进入同一个密钥库,或者它们将具有不同的密钥库容器。

感谢。

4 个答案:

答案 0 :(得分:1)

应用程序特定而非特定于设备。

就您使用Android操作而言,以及您提及签名apk后您可能正在寻找的内容,这是您的证书。您使用凭据为您的应用程序打造品牌。您可以使用相同的密钥标记多个应用程序,事实上,建议您使用一个证书来标记您编写的多个应用程序。更容易跟踪哪些应用程序属于您。

答案 1 :(得分:0)

这是应用程序特定的。但是您可以为多个应用程序使用相同的密钥库。

重要!!!!!!保留更多密钥文件的副本。如果您的应用程序在Play商店中出现并且您错过了密钥文件,那么您永远无法为您的应用程序提供更新。

如果您的应用已经在Playstore上运行,则需要使用相同的密钥库构建apk,否则Google将不接受您的构建。您需要从具有不同包名称的全新上传重新开始。同样的包名称的应用程序也不被接受。您也将放弃所有应用程序的评级和下载数据。

答案 2 :(得分:0)

密钥库是特定于应用的。如果您发布两个应用程序,或者选择其他密钥库,则可以选择相同的密钥库。每个人都有不同的利弊。其中一些内容在[签名注意事项部分]中进行了解释。(https://developer.android.com/studio/publish/app-signing.html#considerations

如果您为应用选择了相同的密钥库,它可以实现各种可能的功能,例如通过权限进行代码或数据共享。这仅适用于使用相同密钥签名的应用。

另一方面,假设将来您想将您的应用程序出售给另一家公司。这可能发生在小型应用程序开发人员身上,其他大型游戏或应用程序开发公司想要获得他们的应用程序(并且他们可以赚很多钱)。如果您使用相同的密钥签署了所有应用程序,则非常困难,因为大公司需要能够签署他们获得的应用程序,因此您必须向他们提供签名密钥。但这使他们可以生成所有应用程序的版本,这不是一个好的安全实践。

如果是我,我会:

  • 为每个应用选择不同的签名密钥
  • 我的应用程序签名由Google Play signing完成,如果您丢失或损害您的密钥(或密钥库密码),或者如果一个恼火的员工利用您的信任滥用您的密钥,则无后顾之忧。

答案 3 :(得分:0)

用于存储的密钥库API是特定于应用程序的。

阅读...

当您需要系统范围的凭据时,请使用KeyChain API。当应用程序通过KeyChain API请求使用任何凭据时,用户可以通过系统提供的UI选择应用程序可以访问哪些已安装的凭据。这样一来,多个应用就可以在用户同意的情况下使用同一组凭据。

使用Android Keystore提供程序让单个应用存储自己的凭据,只有该应用本身才能访问。这为应用程序提供了一种管理仅可单独使用的凭据的方式,同时提供了与KeyChain API为系统范围的凭据提供的安全性相同的安全优势。此方法不需要用户交互即可选择凭据。

您可以在官方网站https://developer.android.com/training/articles/keystore#WhichShouldIUse

上阅读此内容