iOS Provisioning Profile(Certificate)与Code Signing详解

引言

关于开发证书配置(Certificates & Identifiers & Provisioning Profiles),相信做iOS开发的同学没少被折腾。对于一个iOS开发小白、半吊子(比如像我自己)抑或老兵,或多或少会有或曾有过以下不详、疑问、疑惑甚至困惑:

本文将围绕相关概念做个系统的梳理串烧。

写在前面

1.假设你使用过Apple设备(iMac/iPad/iPhone)且注册过Apple ID(Apple Account)。

2.假设你或你所在的开发组已加入苹果开发者计划(Enroll in iOS Developer Program to become a member),即已注册开发者账号(Apple Developer Account)。

只有拥有开发者账号,才可以申请开发/发布证书及相关配置授权文件,进而在iOS真机上开发调试Apps或发布到App Store。

3.若要真机调试实践,你必须至少拥有一台装有Mac OS X/Xcode的Mac开发机(iMac or MacBook),其上自带原生的Keychain Access。

一.App ID(bundle identifier)

App ID即Product ID,用于标识一个或者一组App。

App ID应该和Xcode中的Bundle Identifier是一致(Explicit)的或匹配(Wildcard)的。

App ID字符串通常以反域名(reverse-domain-name)格式的Company Identifier(Company ID)作为前缀(Prefix/Seed),一般不超过255个ASCII字符。

App ID全名会被追加Application Identifier Prefix(一般为TeamID.),分为两类:

”这个App ID,用于标识Bundle Identifier为“”可以表示Bundle Identifier以“com.apple.”开头(苹果公司)的所有应用程序。

用户可在网站上删除(Delete)已注册的App IDs。

XcodeTarget|Info|Bundle Identifier】下;对于Wildcard App ID,只要bundle identifier包含其作为Prefix/Seed即可。

Device就是运行iOS系统用于开发调试App的设备。每台Apple设备使用UDID来唯一标识。

iOS设备连接Mac后,可通过iTunes->Summary或者Xcode->Window->Devices获取iPhone的UDID(identifier)。

个设备。

Apps signed by you or your team run only on designated development devices.Apps run only on the test devices you specify.

用户可在网站上启用/禁用(Enable/Disable)已注册的Device。

被授权用于开发测试的iOS设备(iPhone/iPad)。

1.证书的概念

证书是由公证处或认证机关开具的证明资格或权力的证件,它是表明(或帮助断定)事理的一个凭证。

每个中国人一生可能需要70多个证件,含15种身份证明。证件中“必需的”有30到40个。将这些证件按时间顺序铺开,那就是一个天朝子民的一生——持准生证许可落地,以户籍证明入籍,以身份证认证身份,持结婚证以合法同居,最终以死亡证明注销。

2.数字证书的概念数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是时效性:只在特定的时间段内有效。

某一认证领域内的根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。

在天朝子民的一生中,户籍证明可理解为等效的根证书:有了户籍证明,才能办理身份证;有了上流的身份证,才能办理下游居住证、结婚证、计划生育证、驾驶执照等认证。

iOS证书是用来证明iOS App内容(executable code)的合法性和完整性的数字证书。对于想安装到真机或发布到AppStore的应用程序(App),只有经过签名验证(Signature Validated)才能确保来源可信,并且保证App内容是完整、未经篡改的。

Distribution)。

Development证书用来开发和调试应用程序:Adevelopment certificateidentifies you, as a team member, in a development provisioning profile that allows apps signed by you tolaunchon devices.Production主要用来分发应用程序(根据证书种类有不同作用):Adistribution certificateidentifies your team or organization in a distribution provisioning profile and allows you tosubmit your app to the store. Only a team agent or an admin can create a distribution certificate.自己不喜欢的人,可以报之以沉默微笑;

iOS Provisioning Profile(Certificate)与Code Signing详解

相关文章:

你感兴趣的文章:

标签云: