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

iOS应用签名原理

作者: 十年开发初学者 | 来源:发表于2021-04-15 15:15 被阅读0次

    思考:苹果是如何保证iPhone上运行的App都是经过官方允许的呢?

    回答:最简单的方式就是通过官方生成的非对称加密的一对公私钥。在iOS系统中内置一个公钥,私钥有苹果后台保存,我门传App到AppStore时,苹果后台用私钥对App数据进行签名,iOS系统下载App后,用公钥验证这个签名。如果签名正确,这个App肯定是由苹果后台认证的,并且没有修改过。

    但是如果苹果只有这一个入口的话,这个解决方案时可以的,但是我们实际中,还有开发者的debug模式,企业级证书的App,这样做显然是不可以的

    那么我们来分析一下,它有些什么需求:

    1.安装包不需要上传到App Store,可以直接安装到手机上.

    2.苹果为了保证系统的安全性,又必须对安装的APP有绝对的控制权

    3.经过苹果允许才可以安装

    4.不能被滥用导致非开发APP也能被安装

    为了实现这些需求,iOS签名的复杂度也就开始增加了,苹果这里给出的方案是双层签名.

    步骤:
    1.在Mac系统中生成非对称加密算法的一对公钥\私钥(你的Xcode帮你代办了).这里称为公钥M 私钥M . M = Mac

    2.苹果自己有固定的一对公私钥,跟之前App Store原理一样,私钥在苹果后台,公钥在每个iOS系统中.这里称为公钥A , 私钥A. A=Apple

    3.把公钥M 以及一些你开发者的信息,传到苹果后台(这个就是CSR文件),用苹果后台里的私钥 A 去签名公钥M。得到一份数据包含了公钥M 以及其签名,把这份数据称为证书。

    4.在开发时,编译完一个 APP 后,用本地的私钥 M(今后你导出的P12) 对这个 APP 进行签名,同时把第三步得到的证书一起打包进 APP 里,安装到手机上。

    5.在安装时,iOS 系统取得证书,通过系统内置的公钥 A,去验证证书的数字签名是否正确。

    6.验证证书后确保了钥 M 是苹果认证过的,再用公钥 M 去验证 APP 的签名,这里就间接验证了这个 APP 安装行为是否经过苹果官方允许。(这里只验证安装行为,不验证APP 是否被改动,因为开发阶段 APP 内容总是不断变化的,苹果不需要管。)

    WX20210415-111707.png

    相关文章

      网友评论

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

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