美文网首页
Apple应用签名原理

Apple应用签名原理

作者: 木扬音 | 来源:发表于2021-04-16 00:43 被阅读0次

    苹果的需求

    • 安装包可以不用上传到App Store直接安装
    • 需要经过苹果允许才能安装
    • 不能被滥用导致非开发App也能安装

    双层签名

    因为iOS 开发环境实在Mac系统下进行,所以就产生了两个角色,iOS系统和Mac系统

    • Mac系统中生成非对称加密的公钥和私钥(Xcode已经执行),这里称为公钥M私钥M
    • 苹果自己有一对私钥和公钥,和Apple Store原理一样,私钥放在苹果后台,公钥在每个iOS系统里,这里称为公钥A私钥A
    • 公钥A和你的开发信息绑定在一起,传递给苹果后台(这就是CSR文件),用苹果后台的私钥A签名公钥M,得到一份包含了公钥M及其签名,把这称为证书
    • 在开发时,编译完一个APP后,用本地私钥M(P12)对APP进行签名,同时把上一步得到的证书一起打包进APP,安装到手机上
    • 在安装时,iOS系统取得证书,通过系统内置的公钥A,去验证数字签名是否正确
    • 验证证书后,确保了公钥M是被苹果认证的,再用公钥M去验证App的签名,这里就间接验证了这个App的安装行为是否经过苹果官方允许。(这里只验证安装行为,不验证APP是否改动,因为开发阶段的APP是不断变化的)
    双层签名

    有了上面的验证就可以确保开发者的认证和程序的安全性吗?那不是申请一个证书就可以安装APP到所有iOS设?,于是就有了描述文件

    描述文件

    苹果为了解决应用滥用的问题,所有又增加了两个限制

    • 在苹果后台注册的设备才可以安装
    • 签名只针对某一个具体签名

    并且苹果还想控制App里面的iCloud/PUSH/后合运行/调试器附加这些权限,所以苹果把这些权限开关统一称 Entitlements(授权文件).并将这个文件放在了一个叫做Provisioning Profile(描述文件)文件中。

    描述文件是在AppleDevelop网站创建的(在Xcode中填上ApplelD它会代办创建)xeode运行时会打包进入APP所以我们使用CSR申请证书时,我们还要申请一个东西!! 就是描述文件!

    在开发时,编译完一个 APP 后,用本地的私钥M对这个APP进行签名,同时把从苹果服务器得到的 Provisioning Pr文件打包进APP里,文件名为embedded.mobileprovision,把 APP 安装到手机上.最后系统进行验证。

    双层签名+描述文件

    总结

    • Mac电脑生成一对公钥私钥
      • 利用本地公钥创建CSR文件,请求证书
      • 钥匙串将证书和本地私钥(p12证书)做关联
    • 苹果服务器利用本地私钥生成证书描述文件
      • 证书包含Mac电脑的公钥签名
      • 描述文件:设备列表、AppID列表、权限列表
    • iOS系统利用系统中的公钥(与苹果服务上的私钥是一对)对App进行验证
      • 验证描述文件是否与证书匹配
      • 验证App的安装行为(通过验证证书,拿出证书中的公钥对App的签名进行验证)

    相关文章

      网友评论

          本文标题:Apple应用签名原理

          本文链接:https://www.haomeiwen.com/subject/fokslltx.html