- 每个mac上都会有一对公私钥
- 当我们申请证书时,会将公钥M通过csr 传给苹果服务器
- 苹果服务器讲公钥M 经过apple 私钥A加密然后生成证书
- app打包,Xcode会利用codesign工具,用私钥M给app签名(包括资源签名,代码签名)
- 每台手机会在操作系统内置一个跟苹果服务器私钥A,对应的公钥A
- 当iPhone 要安装app时,会用公钥A解密app内的证书得到公钥M
- 用解密得到的公钥M验证签名是否合法,是否是官方认证的
其实上边的流程是有问题的
那么经过签名的app可以安装在任意一台手机上,这是苹果不愿看到的,所以就有了mobileProvisioning profile 文件,里边包含了appid 在苹果后台注册过的设备,以及包含的证书. 只有对应的app和注册过的设备才能安装在iPhone上(上线appstore,企业签名除外).
流程变成了如下图: