Android应用程序证书的目的

时间:2015-09-24 18:47:10

标签: android certificate

我想澄清一下我与Android应用程序证书相关的混淆(在安装过程中使用)。

在Web中,证书用于映射具有域/身份(组织)的公钥。详细信息的哈希值由CA签名,然后由浏览器验证。

Android应用附带公钥。根据我的理解,开发人员可以使用自己的私钥,签署应用程序的哈希值,然后使用他的公钥发送应用程序。安装人员使用此信息。

我的问题是:

  1. 即使使用了某些CA,app仍会附带CA的公钥 - 拥有签名公钥的人是否重要?它可以是任何人,因为安装人员只会使用它。

  2. 完整性检查Android应用程序证书的唯一用途是什么?应用程序没有像网站那样的公钥,因此证书不会用于将某些公钥与应用程序相关联。证书还有其他目的吗?

2 个答案:

答案 0 :(得分:3)

  

谁拥有签名公钥是否重要?

没有。通常,他们是自签名的。

  

完整性检查是否只使用了android app证书?

它还用于回答两个与权限相关的问题:

  1. App A是否使用与App B相同的签名密钥签名?如果是,那么这些应用程序可以比两个任意应用程序更紧密地进行互操作。

  2. App A是否使用签署了firwmare的相同签名密钥签名?如果是,那么App A可以保留为设备制造商和自定义ROM开发人员保留的某些权限。

  3. 此外,开发人员可以验证其他应用的签名,这对确保您与正确的应用进行通信非常有用。

答案 1 :(得分:1)

  

谁拥有签名公钥有关系吗?它可能是任何人,   安装人员只会使用它。

  • 是的。任何人都可以编写应用程序,对证书进行自签名,并使用它来发布应用程序。私钥仍然由所有者控制,他/她可以控制所有应用程序的功能以及应用程序的任何未来更新,如下所述。
  

完整性检查是否仅使用了android app证书   为了?

不,它提供的不仅仅是:

  • 安装Over-the-Air应用程序更新时,设备将确认更新后的应用程序证书与现有应用程序的证书相匹配。如果开发人员使用新密钥签署应用程序,他/她应该更改包名称;没有这个,Google Play不会让开发者更新应用程序。如果开发人员确实想要更改签名密钥,他/她将被迫更改应用程序的包名称,因此这将在Play商店中显示为一个新的应用程序。

  • 使用相同公钥的两个或多个应用程序可以相互共享数据。权限可以是基于签名的,例如允许这样做。

  • 使用相同密钥签名的2个或更多应用程序也可以在同一个进程组中运行,甚至可以共享代码和状态。

Android Developer页面中提供了更多详细信息 - https://developer.android.com/tools/publishing/app-signing.html#considerations