iOS 供应配置文件和代码签名
文章目录
作者:FloatingGuy 转载请注明出处:https://floatingguy.github.io/
iOS Provisioning Profile(Certificate)与Code Signing详解
什么是App ID?Explicit/Wildcard App ID有何区别?什么是App Group ID?
- Explicit 表示唯一的app id, 即Bundle identifier
- Wildcard 是含有通配符的App ID, 可以表示 一个组织,团体的应用。比如以 com.apple.*开头就是 苹果公司的 应用
什么是 苹果设备的 特征?
- UDID (unique Device identify) 来唯一标识每台设备。
- 使用itunes 和 xcode->window->Devices 可以查看到UDID。
什么是证书(Certificate)?如何申请?有啥用?
- ios 证书分类:
- Development 证书 用来 开发 和调试
- Production 证书 用来分发应用
每个开发者一共可以 将上面2类证书 各自注册 2个。
(AWWDR签发的临时证书)
什么是Key Pair(公钥/私钥)?有啥用?与证书有何关联?
- Xcode 中配置的 Code Signing Identity(entitlements、certificate)必须与 Provisioning Profile 匹配,并且配置的 Certificate 必须在本机 Keychain Access 中存在对应 Public/Private Key Pair,否则编译会报错。
- Xcode 所在的 Mac 设备(系统)使用 CA 证书(WWDRCA.cer)来判断 Code Signing Identity 中 Certificate 的合法性:
- 若用 WWDRCA 公钥能成功解密出证书并得到公钥(Public Key)和内容摘要(Signature),证明此证书确乃 AppleWWDRCA 颁布,即证书来源可信;
- 再对证书本身使用哈希算法计算摘要,若与上一步得到的摘要一致,则证明此证书未被篡改过,即证书完整。
什么是签名(Signature)?如何签名(CodeSign)?怎样校验(Verify)?
- 私钥签名,公钥验证。链式验证
- Xcode 使用指定证书配套的私钥进行签名时需要授权,选择【始终允许】后,以后使用该私钥进行签名便不会再弹出授权确认窗口。
- Xcode 使用指定证书配套的私钥进行签名时需要授权,选择【始终允许】后,以后使用该私钥进行签名便不会再弹出授权确认窗口。
什么是(Team)Provisioning Profiles?有啥用?
- 供应配置文件 (Provisioning Profiles)
- 该文件包含的内容:App ID, 证书 和 设备ID
- 打包App 到真机运行的流程:
- 指明 App ID,并且验证 Bundle ID 是否与其一致;
- 需要证书对应的私钥来进行签名,用于标识这个 APP 是合法、安全、完整的;
- 如果是真机调试,需要确认这台设备是否授权运行该 APP。
- Provisioning Profile 分类:
- Development 分发app 使用
- Distribution 提交给App Store 审核 (不需要指定 devices, 因为最终上架会给任何设备安装)
- 构成
(1)Name:该mobileprovision的文件名。
(2)UUID:该mobileprovision文件的真实文件名。
(3)TeamName:Apple ID账号名。
(4)TeamIdentifier:Team Identity。
(5)AppIDName:explicit/wildcard App ID name(ApplicationIdentifierPrefix)。
(6)ApplicationIdentifierPrefix:完整App ID的前缀(TeamIdentifier.*)。
(7)DeveloperCertificates:包含了可以为使用该配置文件应用签名的所有证书。
(8)Entitlements 键对应的 :
(9)ProvisionedDevices:该mobileprovision授权的开发设备的UDID。 ~/Library/MobileDevice/Provisioning Profiles
这个目录下存储这 所有的 Provisioning Profiles- Team Provisioning Profile 开发组供应配置文件
Xcode如何配置才能使用iOS真机进行开发调试?
多台机器如何共享开发者账号或证书?
遇到证书配置问题怎么办?
Xcode 7免证书调试真机调试