ios各种开发者证书理解
开发证书基本注册流程,以Developer certifacation (开发证书)为例。
- Xcode安装:
Mac 系统中自带诸多根证书,包含 Apple Root CA,此证书签发者就是自己(自签名根证书,当安装Xcode时,自动由此根证书签发:Apple Worldwide Developer Relations Certification Authority -- wwdrca 证书,这是一个中级证书,我们可以认为是用于开发的 CA证书。 - 申请CSR:
在本地钥匙串中申请一对包含公钥私钥的密钥对。并产生一个包含公钥和开发者信息(mac信息)的CSR文件。 - 上传:
CSR文件中有公钥信息,上传到开发者网站。网站与开发者账号关联,换取一个开发证书。
WWDRCA:用自己的私钥对CSR文件公钥和mac信息进行签名。在换取时,member center 获取了开发公钥,Mac信息,关联当前帐号,返回一个iOS developer.cer 证书。
- 下载:
下载ios developer 证书安装,钥匙串追溯到是WWDRCA签发的证书,WW私钥验证后证书为:iPhone Developer:1125556XXX@qq.com。证书显示有效。
此时查看钥匙串,申请CSR时创建的私钥下对应的证书iPhone Developer:1125556XXX@qq.com,证书下对应私钥。
网站证书配置页面包含:
- certification 证书可能包含:
- kai sun ios developement / ios distribution
- Apple push Services com.xkcompany.bbq1.0
- Apns Developerment ios
- Voip Services
- ID identifiers 包含:
不同app 的 appID。 包含精确ID(explicit appid com.flk.XXX)和通配符ID(wildcand appid com.flk.*)
jiushiwo com.flk.jiushiwo
mixintong5.0 com.flk.mixintong5.0 - Devices 设备
当前帐号下不同的调试注册手机. - Provisioning Profiles 供应配置文件
包含上边三项:证书 appID 设备的文件,也区分开发配置和发布配置。
Provisioning Profiles 供应配置文件
注:开发者账号分为:个人/公司(company)/企业(enterprise).企业账号不能发布appStore 手机数量不限,个人和公司调试手机数量均为100
-
provisoning profiles 创建:
- 选择开发版还是发布版。dev or dis 单选 如果是企业账号的发布版会加有In House 和 Ad Hoc 选项,in house 生成的配置文件类型为universalDistribution ,at hoc 生成类型为Distribution 。区别是In House 不限制安装手机。At Hoc 只能是注册的手机能安装app。(ad hoc 拉丁语(for this purpose only)仅为此意,临时的。中文译为“特定的”。出自计算机网络)
- 下拉选择 app ID
- 选择包含的证书。开发模式Dev 可多选:(sunkai ios developer) ,发布模式Dis单选。
- 设置name:WWW
- 下载安装:www.mobileProvision
-
xcode 配置
build path ->code sign- 先选择配置文件www.
- 在选择配置文件下包含的证书设置code sign identitly.
此地有困惑,code sign (代码签名配置)中又any ios SDK,不知何意。不选择www文件有时code sign 能选择所有本地钥匙串中的证书,或选择automatic 下的iOS development 和 distribution 都能运行
代码签名与验证
- 签名
xcode在mac 的 ~/Library/MobileDevice/Provisioning Profiles 目录下选择profiles。pf安装后会保存到此目录。
在xcode打包或调试时,用profile制定的证书在本地钥匙串中对应的私钥对代码进行签名(先计算hash 获得摘要,用私钥将摘要加密),此公钥在证书中,证书又包含在profiles 中(开发版可以包含多个人的开发证书,发布版只能选一个)
此地有困惑,为何有多证书和单证书之分,道理在哪?
- 手机验证
在安装时,profiles 文件会一起拷贝到手机中,用来验证code sign(签名)的各项参数,如;- 正在安装的 app ID 与 profiles 文件标明的app ID是否一致。
- code sign中: app code sign by development .检查profiles 是否也是开发版。
- 手机设备ID 是否是 profiles 标明范围内的手机.(按道理为开发调试和Ad Hoc 才可能不匹配而禁止安装)。
- 证书验证代码,安装时用profile 内的证书文件能对 .ipa 包含的被(code sign 签名)摘要进行解密,说明文件来源可信。用相同hash 计算方法计算摘要,如果摘要一致,则文件完整可信。
注:在全部流程中:
- 证书包含:开发者账号,Mac信息,公钥。
- profiles 文件包含:开发者账号,证书,appID,devices.
p12 证书共享
A 导出共享证书给 B。即:证书+私钥
B 安装 登陆开发网站注册手机设备,下载供应配置文件安装设置到Xcode。(也可在Xcode中根据账号选择各种profiles)。
此地有困惑,这个profiles 文件是否包含新注册的手机设备,如果没有,应该不能运行,如果能,什么道理。暂没有验证是否能运行
以上文字理解参考 链接文章