--------------------sunkaikees@gmail.com-------------------

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 证书可能包含:
    1. kai sun ios developement / ios distribution
    2. Apple push Services com.xkcompany.bbq1.0
    3. Apns Developerment ios
    4. 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 创建:

    1. 选择开发版还是发布版。dev or dis 单选 如果是企业账号的发布版会加有In House 和 Ad Hoc 选项,in house 生成的配置文件类型为universalDistribution ,at hoc 生成类型为Distribution 。区别是In House 不限制安装手机。At Hoc 只能是注册的手机能安装app。(ad hoc 拉丁语(for this purpose only)仅为此意,临时的。中文译为“特定的”。出自计算机网络)
    2. 下拉选择 app ID
    3. 选择包含的证书。开发模式Dev 可多选:(sunkai ios developer) ,发布模式Dis单选。
    4. 设置name:WWW
    5. 下载安装:www.mobileProvision
  • xcode 配置
    build path ->code sign

    1. 先选择配置文件www.
    2. 在选择配置文件下包含的证书设置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(签名)的各项参数,如;
    1. 正在安装的 app ID 与 profiles 文件标明的app ID是否一致。
    2. code sign中: app code sign by development .检查profiles 是否也是开发版。
    3. 手机设备ID 是否是 profiles 标明范围内的手机.(按道理为开发调试和Ad Hoc 才可能不匹配而禁止安装)。
    4. 证书验证代码,安装时用profile 内的证书文件能对 .ipa 包含的被(code sign 签名)摘要进行解密,说明文件来源可信。用相同hash 计算方法计算摘要,如果摘要一致,则文件完整可信。

注:在全部流程中:

  • 证书包含:开发者账号,Mac信息,公钥。
  • profiles 文件包含:开发者账号,证书,appID,devices.

p12 证书共享

A 导出共享证书给 B。即:证书+私钥
B 安装 登陆开发网站注册手机设备,下载供应配置文件安装设置到Xcode。(也可在Xcode中根据账号选择各种profiles)。

此地有困惑,这个profiles 文件是否包含新注册的手机设备,如果没有,应该不能运行,如果能,什么道理。暂没有验证是否能运行


以上文字理解参考 链接文章

posted @ 2019-01-17 19:10  雪天微风吹  阅读(1181)  评论(0编辑  收藏  举报