Apple App签名流程

App 签名流程

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

开发端:xcode会在keychain生成一对公钥M、私钥M,保存在mac电脑中

设备端:还有一对 公钥A(iPhone)、私钥A(苹果服务端)

Mac 公钥M 私钥M

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

Apple server 私钥A

Apple iphone 公钥A

  • step 01:通过mac中的公钥M(核心)+证书颁发机构信息,生成一个CSR文件,传递给苹果服务器

  • step 02: 苹果服务器通过私钥A加密公钥M,生成一个证书,其中包含公钥M+Hash值,并对公钥M的Hash值作数字签名

私钥A 加密 公钥M

苹果服务器就相当于CA机构

证书就是 CRT文件

  • step 03: 通过mac中的私钥M,对App中的Mach-O进行签名,生成一个App的签名,同时将证书打包进去,形成一个ipa包

  • step 04: 通过iPhone的公钥A 解密 证书,证书解密后得到公钥M,公钥M 可以验证 App的签名,验证通过,说明安装行为是被允许的,合法的(但是还无法限制设备,接下来苹果的操作很骚。。)

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

第一限制在苹果后台注册过的设备才可以安装.

第二限制签名只能针对某一个具体的APP.

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

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

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

为了限制,苹果提供了一个权限文件,即profile - 描述文件,所以3中的证书是包含在描述文件中的。除此之外还包含 设备id、AppID、权限文件等信息,其目的有两个:1)限制免费证书安装设备;2)限制免费证书安装期限,以下是加上描述文件后的双重验证过程

总结流程

1)苹果服务器提供了一个描述文件,其中包含CRT证书。

2)然后通过mac的私钥M对Mach-O文件进行签名,生成App签名。

3)将Mach-O文件、App签名、描述文件一起打包生成ipa包

4)将App安装到iOS设备中

5)通过iPhone手机的私钥A解密描述文件中的CRT证书,解密后得到公钥M

6)然后通过公钥M验证App的签名。因为App签名是通过私钥M进行签名的,如果验证通过,则说明安装是合法的

终端命令查看:通过命令查看描述文件(.app包的目录下):security cms -D -i embedded.mobileprovision

总 结

  • 证书:公钥M/私钥M发出去,由官方的机构对其进行签名后组成的数据包

  • p12 就是本地私钥M

  • 描述文件:包含证书、权限文件(Entitlements - 权限开关)、UUID等信息+权限。不能修改

证书生成流程:

1、通过本地的公钥M/私钥M,申请证书 -- CSR文件

2、服务器将公钥M进行一次RSA加密,得到CRT证书,

3、将CRT证书下载到本地,与私钥M(p12)进行绑定

最终流程:

1、在Mac中通过公钥M+证书颁发机构信息生成CSR文件

2、将CSR文件传递到苹果服务器,申请CRT证书

3、苹果服务器通过私钥A加密公钥M,生成CRT证书,并对公钥M的hash值进行数字签名(即通过RSA加密)。同时苹果还提供了描述文件

4、通过私钥M对Mach-O进行签名,生成一个App的签名,同时将描述文件、CRT证书等打包,形成一个ipa包

5、App安装到iOS设备

6、从iPhone手机中获取公钥A,通过公钥A解密CRT证书,得到公钥M

7、通过公钥M验证App的签名

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容