通俗易懂的讲解iOS中的证书知识

前言:

iOS应用以流畅和安全著称,其中的安全性主要依靠的就是苹果开发中使用的一套证书流程。证书是用来给应用程序签名的,只有经过签名的应用程序才能保证他的来源是可信任的,并且代码是完整的,未经修改的。证书初次使用会感觉流程很复杂,其实对于流程理解了就会觉得简单了。

模拟流程

在讲解之前,我先用现实中的一件事做个比方,这样理解起来简单一点。比如:我要成立一个汽车厂。

  1. 按照规定,我要先拿到经营许可证,然后拿着经营许可证去政府的车辆审批部门去申请制造汽车的资质证明书,而车辆审批部门会给我发俩个资质证明书,一个搞内部研发的资质证明书,一个可以投入市场的资质证明书,都是只有一年期限。
  2. 拿到资质证明书后,才可以开始汽车制造。首先我还必须要注册一个商标,这个商标要登记在车辆审批部门,防止别人伪造。
  3. 然后我拿着研发资质证明书,就可以进行研发了,经过科(加)学(班)规(加)范(点)的研发,车子终于成型,我想投入市场,但是为了安全,最好经过测试合格后才可以。
  4. 这时候我可以进行内部测试,审批部门每年会给我100个名额,我可以最多找100个人测试,这一百个人不必非要在授权的门店里买车,可以直接试车。需要注意的是,我在进行内部试车的时候,也分俩种情况,一种是在我自己规划的场地进行试车,另一种就是在外面的正常的公路上进行试车,但都是在没有检验合格证的情况下试车的。
  5. 试过之后,我就可以拿着投入市场的资质证明书给车检部门发出申请,然后他们要对我的车子进行检验审核,没有问题了,给我一个检验合格证,我就可以正式投入市场了。
  6. 投入市场后,来买车的人会看到我的资质证明书和我注册的商标以及检验合格证就可以确定这是正品,就可以放心来买了。
  7. 如果我想在车上安装导航系统,同样的也要申请俩个证书,一个开发导航资质证明书,一个发布导航资质证明书,同样是需要和商标绑在一起,一年期限。当然我也可以委托第三方厂家给我开发,只要我提供俩个资质证明书即可。
实际开发流程

接下来,就回到iOS中的开发流程中来。

  1. 首先我需要一个开发者账号,分为个人账号(Individual) 和 公司团队账号(Company/Organization)和企业账号(Enterprise)三种类型,个人和公司团队都是99美元一年,可以发布到AppStore上,每年可以有100个苹果的iOS设备测试。企业账号是299美元一年,但是不能发布到App Store,只能企业内部应用,苹果的iOS设备数量不限制。就好比我生产的车不能发布到市场上,只能在自己的地盘上试验,一旦上路就是黑车了,被检查到会被吊销营业资格。
  2. 有了账号,就可以申请经营许可证了,也就是通过Keychain(钥匙串)的证书助理从证书颁发机构请求证书。


    455017-e84ef019ef4984b2.png

    结果keychain 将生成一个包含开发者身份信息和公钥的CSR(Certificate Signing Request)文件。私钥 private key始终保存在 Mac OS 的 Keychain Access 中,用于签名(CodeSign)本机对外发布的 App;公钥 public key 一般随证书散布出去,对 App 签名进行校验认证。用户必须妥善保存本地 Keychain 中的 private key,以防伪冒。


    20150114091003101.jpg
  3. 使用CSR文件到开发者中心申请证书。首先要了解几个概念,Certificates(证书),Identifiers(标识符),Devices(设备),Provisioning Profiles(描述文件)。页面如图所示:


    Snip20160808_2.png

    Certificates(证书)就是到车辆审批部门去申请的资质证明书,Identifiers(标识符)就是车的商标,Devices(设备)就是可以试车的那100个人,Provisioning Profiles(描述文件)就是包含了证书,标识符和设备的文件,也就是客户试车的时候的凭证。申请证书页面如图:


    455017-7acbae0d954a0580.png
    其中,Development就是开发证书,Production是发布证书,细分起来,发布证书分为AppStore发布证书和Ad Hoc发布证书,AppStore证书就是提交审核时用到的证书,也就类似于投入市场的资质证明书,Ad Hoc证书可以模拟生产环境,类似于在外面的正常的公路上试车那种类型。最后生成成功后download下来并双击导入钥匙串。
    20150114091440719.jpg
    在多台机器上共享证书,在 Keychain Access|Certificates 中选中欲导出的 certificate 或其下 private key,右键 Export导出p12文件,其他 Mac 机器上双击 Certificates.p12(如有密码需输入密码)即可安装该共享证书。
  4. 接下来去申请一个App ID,也就是去申请一个汽车商标。在“ Identifiers”一栏下选择“App IDs”,可查看所有已申请的App IDs,点击右上“+”,需要注意,App ID一般是反域名格式,如:com.company.test。在“App Services”栏下选择应用使用到的服务(如要使用推送功能,勾选“Push Notifications”)。
  5. 添加调试设备,也就是可以试车的人员,使用UDID来标识每一台设备都有唯一性,注意,一年只有100个名额,即使删除掉也算用去了一个名额。
  6. 添加描述文件(Provisioning Profile),描述文件和证书的环境相对应。描述文件就类似于售车时,给客户列出的一系列合法文件证明。


    Snip20160808_3.png

1.Provisioning Profile决定Xcode用哪个证书(公钥)/私钥组合(Key Pair/Signing Identity)来签名应用程序(Signing Product),将在应用程序打包时嵌入到.ipa包里。
2.Provisioning Profile把这些信息全部打包在一起,方便我们在调试和发布程序打包时使用。这样,只要在不同的情况下选择不同的Provisioning Profile文件就可以了。
3.Provisioning Profile也分为Development和Distribution两类,有效期同Certificate一样。Development版本的ProvisioningProfile用于开发调试,Distribution版本的ProvisioningProfile主要用于提交App Store审核,其不指定开发测试的Devices。
4.Xcode 将全部供应配置文件(包括用户手动下载安装的和 Xcode 自动创建的Provisioning Profile放在目录 [~/Library/MobileDevice/Provisioning Profiles] 下。

生成成功后的Provisioning Profile下载到本地,双击会自动安装到xcode中。
7.最后,如果需要开通推送功能,还需要再申请俩个推送证书,流程同开发证书一样。也可以使用第三方推送平台,但是得提供俩个环境的推送证书。


Snip20160808_5.png

一切准备完毕,这时候就可以打包提交到AppStore进行审核了,类似于车检部门进行审核,审核通过后发到AppStore市场上,就类似于拿到了检验合格证了。


iOS开发中的证书使用的流程就是这样了,希望本文能帮助到你更好的理解iOS开发。

参考:
iOS Provisioning Profile(Certificate)与Code Signing详解
苹果IOS开发者账号总结
iOS开发证书与配置文件的使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容