iOS 证书签名那些事
与其被一个东西经常折磨,那么搞定它吧。
没错,iOS的证书签名就是这么一回事,让我们剥掉外衣,看看内在。
- 证书和密钥的原理
- 授权和配置文件
- Xcode中的签名如何配置
- 重签是个什么鬼
如果大家喜欢,可以叫我皮皮,后文也就用"皮皮"自称了
一·证书和密钥的原理
实例是最快理解的方式,我们看看实例
1. 苹果后台创建证书的例子
第一步: 本地生成公私钥
这是我们熟悉的步骤,我们可以想想这几步做什么什么?
其实,上面已经帮我们标注了;没错,钥匙串帮我们创建了一对 公私钥;
公钥导出成了文件 CertificateSigningRequest.certSigningRequest (如果有心,我们可以打开文件,看看,里面是字符串)
私钥保存在钥匙串里面
第二步: 苹果后台创建证书
没错,证书有很多很多种,我们该选择哪种呢?这个问题留着后面说(主要是苹果方面的策略),但是原理都是一样的,我们选择App Store and Ad Hoc版本的
依据指示,选择我们就创建完了证书,下载;然后双击,我们会发现钥匙串种已经存在了(公司账户操作,皮皮不方便暴露,所以马赛克了下)
我们可以详细看看证书,嗯,
- 一些附加的信息;比如用户ID,名称等
- 公钥,其实就是我们上传到苹果后台的公钥(CertificateSigningRequest.certSigningRequest文件里面包含)
- 签发者信息;没错,就是苹果爸爸签发的
其实看到这里,我们已经已经明白了,可以把证书两个字重新表达下;
证书: 一个公钥 + 被认证机构CA签名认证的附加信息
相信到这里大家其实也明白了;之后需要ipa签名的时候, Xcode就是用 私钥签名,然后之后公钥就可以校验了。同理,我们常说的P12文件 ,就是证书+私钥的组合体
2. 苹果账户和证书的类型
1.证书的类型
苹果爸爸后台的证书类型太多了,很多时候看到我们眼花缭乱,哈,还是得拨云见雾啊,听皮皮给分析下
打包类型的:
- iOS App Development 开发证书,调试用的,开发者必备
- Ad-hoc 内测时候用,小团队用可以,因为限制了100台设备
- In-house 也是内测用,大厂必备,不限设备安装
- App-Store 发AppStore或者testflight测试使用,直接装不到手机上,必须经过苹果爸爸(越狱手机的话,当皮皮没说)
以上四种就是 所有iOS可以打包的证书,根据情况来使用;这里歪个楼,有小伙伴肯定问,说,我上去时候,看见那么多种证书,可以简单说几种皮皮使用过的;
- Apple Push Notification service SSL (Sandbox & Production) 不用说,大家都知道,push证书,推送用的,还得最后转成 pem格式给后端
- VoIP Services Certificate VoIP证书,简单说就是音视频通话会用这种,比如每天晚上异地恋的小情侣微信语音通话,就需要这种证书
- Developer ID 这个是给Mac上 App签名用的,不然下个dmg,打开提示不安全,有了这个,可以越过提示不安全这步
好了,回来iOS的,有的小伙伴得问,你说了这么多,为什么我的账户下找不到有些类型的,其实,这就涉及到苹果账户的类型呢?
2.苹果账户类型
账户有四种,其实皮皮理解分为两种就可以
- 企业版 可以发inhouse包,实质上等于绕开了App Store,有了分发权利,但是内测包大规模漏出,可能正式版会被从App Store下架;能发inhouse,AppStore就不能发了,adhoc也就比较鸡肋了; 结论就是,企业版账户主要用来大规模内测,299美刀/年
App Store版 也就是用于发到App Store商店的,这个其实可以是公司账户申请,也可以是个人账号申请,区别是有没有邓白氏码;当然想发内测就只能adhoc了, 99美刀/年
还有一种教育账户,和发App Store版的功能类似,指示免费,当然皮皮没用过,不多说了
下面第一个是企业版账户
image.png
这种是 上传App Store版账户(申请是公司主体)
今天就说到这里,下次说说 授权和配置文件(Provision file)