iOS证书配置

# 一、Overview
我们都知道开发一款应用需要配置苹果常用证书、
AppId,Provisioning Profiles,如果有推送还需要配置推送证书等
# 二、App ID
App ID是每个应用的独立标识,在设置中可以配置该应用的权限,比如:Push Notifications、Network Extensions等。
# 三、开发者证书
- iOS证书是用来证明iOS App内容(executable code)的合法性和完整性的数字证书。对于想安装到真机或发布到AppStore的应用程序(App),只有经过签名验证(Signature Validated)才能确保来源可信,并且保证App内容是完整、未经篡改的。
- 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。具有时效性,只在特定的时间段内有效。
- 开发证书类型分为两种,一种开发证书(iOS Development)一种发布证书(iOS Distribution)。开发证书(iOS Development)用于开发和调试应用程序,可用于真机调试;生产证书用于打包上传App Store,用于验证开发者身份
# 四、推送证书
如果项目中集成了推送功能,同样需要配置推送证书。推送证书同样也分两种:开发(Apple Development iOS Push Services)、生产(Apple Production iOS Push Services)。推送证书在AppID中创建生成,同时生成的的p12文件需要上传到服务端后台(友盟后台、极光后台或自己服务端后台)
# 五、配置文件(Provisioning Profiles)
配置文件同样也分两种,分为开发(
Development)和发布(Distribution),配置文件(Provisioning Profiles)中包含了证书、App ID、设备(Devices),后缀名为.mobileprovision。它在开发者账号体系中扮演着配置和验证的角色,是真机调试和打包上架必须的文件
- 一个
Provisioning Profile对应一个Explicit App ID或Wildcard App ID Provisioning Profile决定Xcode用哪个证书(公钥)/私钥组合(Key Pair/Signing Identity)来签名应用程序(Signing Product),将在应用程序打包时嵌入到.ipa包里Provisioning Profile把这些信息全部打包在一起,方便我们在调试和发布程序打包时使用。这样,只要在不同的情况下选择不同的Provisioning Profile文件就可以了Provisioning Profile也分为Development和Distribution两类,有效期同Certificate一样。Development版本的ProvisioningProfile用于开发调试,Distribution版本的ProvisioningProfile主要用于提交App Store审核,其不指定开发测试的Devices
ps:打
Ad-hoc包的时候,如果遇到刚添加的设备UDID没添加进去,可以将开发模式的配置文件下载下来,打包后直接选中即可

在配置证书之前我们需要有一个开发账号。个人账号和公司账号类似,每年都需要支付99刀,其中公司账号需要邓白氏编码而个人账号并不需要。
如果项目需要不通过App Store进行安装,可以申请企业账号。当然了,也可以找一些第三方直接打企业包,比如蒲公英之类的
# 六、创建CSR文件(证书请求文件)
CSR(
Certificate signing request)即证书请求文件。证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件(CSR文件),证书申请者只要把CSR文件提交给证书颁发机构后(创建App ID时上传到苹果后台),证书颁发机构使用其根证书私钥签名生成证书公钥文件(开发者证书)
- 关于CSR文件的创建,我们可以直接使用Mac上的钥匙串访问直接请求。
具体步骤为: 钥匙串访问 -> 钥匙串访问 -> 证书助理 -> 从证书颁发机构请求证书
1、打开电脑上的钥匙串访问,选中证书助理;

2、用户电子邮件地址填开发者账号的邮箱,名称可以随意填,然后保存到磁盘上。

3、Keychain将生成一个包含开发者身份信息的CSR(Certificate Signing Request)文件。同时,Keychain Access->Keys(密钥)中增加一对Public/Private Key Pair
# 创建App ID
1、登录苹果开发者中心,或者直接登录Apple Member Center选择Certificates,Identifiers & Profiles

2、选择Identifiers 中的 App IDs,然后点上方的加号;

3、添加App ID Description和Bundle ID
- 在“Explicit App ID”栏下的“Bundle ID”项中输入App ID(反域名格式,如:com.company.test)
- 这里“Bundle ID”对应Xcode中的“Bundle identifier” Explicit App ID:唯一的App ID,用于唯一标识一个应用程序。例如“com.apple.garageband”这个App ID,用于标识Bundle Identifier为“com.apple.garageband”的App
- Wildcard App ID:含有通配符的App ID,用于标识一组应用程序。例如“”(实际上是Application Identifier Prefix)表示所有应用程序;而“com.apple.”可以表示Bundle Identifier以“com.apple.”开头(苹果公司)的所有应用程序。
- 在“App Services”栏下选择应用要使用到的服务(如要使用推送功能,勾选“Push Notifications”)
- 点击continue->点击submit->点击done,申请App IDs完成。点击All IDs可查看申请的ID,点击该ID
- 点击 对应名称 可对该App ID进行编辑
# 七、创建开发者证书 和 推送证书
1、选择Certificates,然后选择上方的加号;