我们平常具体的操作和概念是这样的:
第 1 步对应的是 keychain 里的 “从证书颁发机构请求证书”,这里就本地生成了一对公私钥,保存的 CertificateSigningRequest 就是公钥,私钥保存在本地电脑里。
第 2 步苹果处理,不用管。
第 3 步对应把 CertificateSigningRequest 传到苹果后台生成证书,并下载到本地。这时本地有两个证书,一个是第 1 步生成的,一个是这里下载回来的,keychain 会把这两个证书关联起来,因为他们公私钥是对应的,在XCode选择下载回来的证书时,实际上会找到 keychain 里对应的私钥去签名。这里私钥只有生成它的这台 Mac 有,如果别的 Mac 也要编译签名这个 App 怎么办?答案是把私钥导出给其他 Mac 用,在 keychain 里导出私钥,就会存成 .p12 文件,其他 Mac 打开后就导入了这个私钥。
第 4 步都是在苹果网站上操作,配置 AppID / 权限 / 设备等,最后下载 Provisioning Profile 文件。
第 5 步 XCode 会通过第 3 步下载回来的证书(存着公钥),在本地找到对应的私钥(第一步生成的),用本地私钥去签名 App,并把 Provisioning Profile 文件命名为 embedded.mobileprovision 一起打包进去。这里对 App 的签名数据保存分两部分,Mach-O 可执行文件会把签名直接写入这个文件里,其他资源文件则会保存在 _CodeSignature 目录下。 第 6 – 7 步的打包和验证都是 Xcode 和 iOS 系统自动做的事。
CSR:Certificate Singing Request,证书签名请求文件。
包含电脑的公钥信息。所以创建时不需要填任何和发布等有关的信息。
Certificates证书:发布者证书。Apple Develop的ID 对某部电脑的授权证书。
如果没有企业账号可借助第三方平台(如:fywl689.com),这也是一个不错的办法。
内容是公钥或私钥,由其他机构对其签名组成的数据包。
电脑拥有这个证书后,有权对该Apple Developer的ID下所有App进行真机测试、打包、发布。注意这里,并未指定App,换句话说,和App无关。
CSR 和 Certificates 的联系
上面提到了Certificates包含了电脑的信息,这个信息来自于CSR。所以在创建Certificates时,需要提交CSR。相当于Mac 的公钥被苹果私钥 加密的过程。
p12: 本地私钥,可以导入到其他电脑。
上面提到,拥有证书才有权做那些事。如果另一部电脑想发布,也需要证书。如果又创建一个新证书也能解决,但一般一个开发者帐号创建一个发布证书就够了,而且苹果对这证书数量有限制。这时候导出p12文件,相当于拷贝了一份私钥。给另一部电脑安装后,另一部电脑就有权了。
Entitlements:包含了 App 权限开关等信息。
Provisioning Profile: 描述文件。包含了证书、App ID、设备、Entitlements 等数据,并由后台私钥签名的数据包。也称为PP文件,.mobileprovision后缀文件。
领取专属 10元无门槛券
私享最新 技术干货