iOS 证书小结
2018-12-02 本文已影响0人
sovran
iOS 证书小结
iOS开发需要开发者账号,如果要发布app还需要申请对应的证书。证书就是用来对app包进行加密, 然后苹果通过对app包校验,来保证安装的应用的确是你发布的,没有被篡改过。 同时,苹果还在中间添加了一些小伎俩, 通过证书里面的配置文件,控制不同类型证书的用途及适用的设备,从而通过此来收取开发者费用。
证书相关的流程
- 开发者本地生成certSigningRequest文件,在这个过程中,苹果会生成一对公钥与私钥, 在certSigningRequest中会包含公钥,私钥保存在本地机器中, 可以通过keychain看到
- 开发者到苹果开发者网站申请证书, .cer证书(分为开发和分发等类型) - 安装这个证书后,然后安装对应的私钥后 本地相当于登录了这个账号,可以进行对应的操作
- 创建AppId, 主要是用于后面创建对应的mobileProfile
- 配置Provisioning Profiles文件, 选择对应的AppId, 还有类型。 如果是开发证书,还可以选择设备列表
- 开发者下载Provisioning Profiles文件, 打包的时候就可以选择对应的证书了。
各个证书的作用
cer证书
- 开发证书用于真机调试
- 发布证书用于打包发布
- 推送证书,对应上述的证书分别对应开发环境和正式环境的推送
mobileprovision文件
可以称为pp文件, 包含appId、开发者正式、硬件id。 添加到xcode上,主要描述这个app的信息及调试相关的东西。 pp文件和app是一对一的关系, cer证书可以一对多。
p12证书
这个是私钥, 钥匙用某个开发者账号的证书,需要安装对应的私钥。 私钥就是用来对程序进行加密的。
有证书、私钥和pp文件就可以进行签名了。
证书加解密流程
- 我们创建了certSigningRequest, 生成了用户的公钥与私钥。certSigningRequest里含有公钥信息, 私钥在本地
- 通过上传certSigningRequest到苹果开发者网站,创建cer证书。
- 在开发者网站上创建AppId, 开启对应的功能, 生成mobileprovision文件, mobileprovision文件是苹果使用自己的私钥进行加密的, 包含了用户的公钥、appId、调试设备id、对应app的功能等
- 本地安装cer证书,会自动匹配到用户的私钥,如果是其它开发者,还需要申请人导出本地的私钥p12文件 进行安装
- 打包的时候, 需要选择mobileprovision文件、cer证书, 进行打包, 这里会把mobileprovision文件和app的文件通过用户私钥进行加密。
- iOS设备安装了app, 首先通过苹果的公钥验证mobileprovision文件是否合法,然后使用mobileprovision文件里的用户公钥验证app的签名。如果是开发证书, iOS设备还会根据mobileprovision文件内的设备id验证是否能在本机安装。
证书加密验证完整流程
cer_flow.jpg