先上一张摘自技术论坛的图,然后看图写作。
图中iphone与苹果服务器的公钥A与私钥A是一对非对称秘钥。
1.利用mac的钥匙串申请certificatesigningrequest(csr)文件。(此过程将生成私钥M及公钥M,且csr文件将包含公钥M)
2.我们将csr文件传至苹果服务器(即apple developer),这时苹果服务器用私钥A对公钥M进行签名生成certificate。
3.再将certificate和app id,测试device id,权限文件进行签名生成provisioning profile。
4.下载certificate及provisioning profile至mac电脑。
5.双击或者手动导入certificate及provisioning profile至电脑即可。(可以通过钥匙串导出certificate为p12文件,p12文件包含了certificate及certificate中公钥M所对应的私钥M)
6.接下来xcode导出ipa(一个压缩包,解压缩后得到一个payload文件夹,文件夹内有一个.app,.app显示包文件可以到一系列资源文件,mobieprovision及mach-o),导出过程同时包含了签名过程,mac电脑利用私钥M对一系列资源文件进行签名,得到.app文件夹下的_codesigning文件夹,对mach-o进行签名得到的_codesigning可以通过显示mach-o的包内容查看到,mobileprovision其实就是provisioning profile。
7.将ipa安装到iphone时,iphone将利用公钥A对mobileprovision进行校验,再对mobieprovision中的证书进行校验,然后拿出证书中的公钥M对一系列的资源及mach-o的签名进行校验,最后将iphone的udid和mobileprovision中的device列表进行匹配,如果包含则进行安装。