作者:kim
时间:Apr 27, 2015
版权:非商用,自由转载,请保留原文地址。
1. Provisioning Profile 是苹果独有的,安装在设备上的配置文件,后缀名是 .mobileprovision ,通常简称 PP 文件。
简单地说,PP 文件就是把 Certificates 个人证书、App ID(或者其它各种服务种类的 ID)、Device ID,三者捆绑起来。
Provisioning Profile = Signing Certificate + App(Service) ID + Device ID
2. 简单地说,Provisioning Profile 用来描述哪些人开发的哪些 App(或者服务)能够在哪些 Device 上面运行的文件。
1)Provisioning Profile 决定 Xcode 用哪个证书(包含用户的公钥)/私钥组合(Key Pair / Signing Identity)来签署应用程序(Signing Product)。
2)在应用程序打包时,Provisioning Profile 被嵌入到 .ipa 包里。
3)安装应用程序时,Provisioning Profile 文件被拷贝到 iOS 设备中,运行该 iOS App 的设备也通过它来认证安装的程序。
3. 在网站上访问 “Certificates, Identifiers & Profiles” -> Provisioning Profiles ,进入 iOS Provisioning Profiles 配置文件创建界面。
4. 点击 “manually generate profiles” 或者右上角的 “+” 号,挑选配置文件的类型。这里我们需要的是 Development 开发型配置文件。
5. 点击 Continue,选择要包含的 App ID 。
6. 点击 Continue,选择要包含的证书 Certificate(可多选)。注意,被签名加密的 App 的相应的那个证书必须被添加进去!
7. 点击 Continue,选择设备 Devices(可多选)。
8. 继续点 Continue,给 Provisioning Profile 配置文件起名。
9. 点击 Generate,生成配置文件。
10. 点击 Download 下载 .mobileprovision 文件,这就是生成好的配置文件。不下载其实也是可以的,因为 Xcode 会帮你管理它。
11. 在网站的配置文件列表能看到,新的配置文件已经处于 Active 激活状态。
12. 另一方面,Xcode 将全部配置文件,包括用户手动下载安装的,和 Xcode 自动创建的 iOS Team Provisioning Profile,都放在目录 ~/Library/MobileDevice/“Provisioning Profiles”/ 下。
13. 可以用 security 命令查看一下配置文件的内容,我们可以看到 PP 文件实际上是一个 XML 格式的 plist 文件。
$ security cms -D -i nameofppfile.mobileprovision
14. 注意到其中的 UUID 信息,就是每个 PP 文件的唯一标识,通常作为文件名前缀。
15. 注意到 DeveloperCertificates 信息,这是一个数组,包含了所有的证书信息,证书(即data)都是基于 Base64 编码的,符合 PEM(Privacy Enhanced Mail, RFC 1848) 格式。
16. 因为一个证书可以存在于多个不同的配置文件之中,所以在实际开发中,如果用 Xcode 自己选择配置文件的话,可能存在不确定性。幸好,Xcode6 开始提供了选择配置文件的功能,让用户自己为项目选择合适的 Provisioning Profile!
17. iOS 设备和 Mac 系统都使用 Provisioning Profile 中的开发/发布证书来判断 App 的合法性与完整性!
1)可信性:使用苹果根证书 AppleWWDRCA.cer 能正确地从证书中解密出 App(Executable Code)的内容摘要(Signature),则证明此 App 确实是经过苹果签发的,即确实是认证开发者发布的!
2)完整性:对 App(Executable Code)本身使用 PP 文件记录的哈希算法,计算出内容摘要(Signature),若与第一步得到的一致,则证明此 App 确实未被篡改过!