我想澄清一下我与Android应用程序证书相关的混淆(在安装过程中使用)。
在Web中,证书用于映射具有域/身份(组织)的公钥。详细信息的哈希值由CA签名,然后由浏览器验证。
Android应用附带公钥。根据我的理解,开发人员可以使用自己的私钥,签署应用程序的哈希值,然后使用他的公钥发送应用程序。安装人员使用此信息。
我的问题是:
即使使用了某些CA,app仍会附带CA的公钥 - 拥有签名公钥的人是否重要?它可以是任何人,因为安装人员只会使用它。
完整性检查Android应用程序证书的唯一用途是什么?应用程序没有像网站那样的公钥,因此证书不会用于将某些公钥与应用程序相关联。证书还有其他目的吗?
答案 0 :(得分:3)
谁拥有签名公钥是否重要?
没有。通常,他们是自签名的。
完整性检查是否只使用了android app证书?
它还用于回答两个与权限相关的问题:
App A是否使用与App B相同的签名密钥签名?如果是,那么这些应用程序可以比两个任意应用程序更紧密地进行互操作。
App A是否使用签署了firwmare的相同签名密钥签名?如果是,那么App A可以保留为设备制造商和自定义ROM开发人员保留的某些权限。
此外,开发人员可以验证其他应用的签名,这对确保您与正确的应用进行通信非常有用。
答案 1 :(得分:1)
谁拥有签名公钥有关系吗?它可能是任何人, 安装人员只会使用它。
完整性检查是否仅使用了android app证书 为了?
不,它提供的不仅仅是:
安装Over-the-Air应用程序更新时,设备将确认更新后的应用程序证书与现有应用程序的证书相匹配。如果开发人员使用新密钥签署应用程序,他/她应该更改包名称;没有这个,Google Play不会让开发者更新应用程序。如果开发人员确实想要更改签名密钥,他/她将被迫更改应用程序的包名称,因此这将在Play商店中显示为一个新的应用程序。
使用相同公钥的两个或多个应用程序可以相互共享数据。权限可以是基于签名的,例如允许这样做。
使用相同密钥签名的2个或更多应用程序也可以在同一个进程组中运行,甚至可以共享代码和状态。
Android Developer页面中提供了更多详细信息 - https://developer.android.com/tools/publishing/app-signing.html#considerations