iOS开发关于证书的那点事

讲之前先介绍一下bundle id,这个东西就相当于我们每个人日常生活中的身份证一样,一个App有且是有唯一的bundle Id,一旦App上架以后基本就无法修改了。特别是我们的bundle id还绑定了很多第三方的东西修改起来也是很麻烦,
通常我们创建一个App的配置有证书,App ID(bundle identifier),设备(Device)和齿轮文件还有一个CSR文件。
一.CSR文件
CSR文件(Certificate Signing Request),证书签名请求,要生成证书必须要先向keychain(钥匙串)申请CSR文件,此文件包含了一个包含开发者身份信息,我们再申请生成CSR文件同时,Keychain Access|Keys中将新增一对Public/Private Key Pair(This signing identity consists of a public-private key pair that Apple issues),他会和我们进行匹配,导致只有创建证书的电脑才能将证书正确的安装并使用,iOS开发的所有证书都是保存到钥匙串里面进行管理的。此时的证书仅限于创建它的电脑去使用,如果我们想让别人使用这个证书,必须要到导出一个.p12文件,

屏幕快照 2016-10-27 22.31.41.png

最左边带有三角尖头的就代表时有私钥的证书文件,这个时候我们就可以右击选择导出.p12文件,他其实就是一个包含了私钥和证书的备份文件,或者可以理解为副本。这样一个证书就可以给很多人使用了
PS:如何创建CSR文件http://www.jianshu.com/p/5ba97e2b0045
如果我们想知道开发者中心的证书对应着我们钥匙串里面的证书,只需要比对它们的过期时间,一般来说证书的有效期只有一年,而且因为中美两国的时间差等原因,一般来说钥匙串里的证书和开发者中证书的过期时间最多只相差一两天,大多是相差一天或刚好吻合。
二.证书
证书分为Development测试(开发)证书和Production发布证书,分别用来真机测试和发布(打包AdHoc版ipa),首先一般来说测试和发布证书一般只允许创建两个,但是公司开发者帐号允许创建三个发布证书,个人开发者帐号没有使用过不清楚。之前有人问我是不是发布一个App就要创建一个发布证书,答案无疑是否定的,我们一般创建了一个测试和发布证书就可以给无数个App使用(理论上),但是推送的测试/证书是绑定了一个特定的App,所以他是不同的App就要创建不同的推送证书。而且正在使用(或你电脑安装且正在使用)的证书在被撤销后还有24/48小时的过渡期,这段时间内你不能创建新的对应的测试/发布证书,别人拷贝的.p12文件仍旧可以使用,关于这一点我也不是特别清楚,也是无意中发现的,有知道的可以在下面评论告知,不吝赐教。
三.App ID(bundle identifier)****
App ID即Product ID,用于标识一个或者一组App。
App ID应该和Xcode中的Bundle Identifier是一致(Explicit)的或匹配(Wildcard)的。
App ID字符串通常以反域名(reverse-domain-name)格式的Company Identifier(Company ID)作为前缀(Prefix/Seed),一般不超过255个ASCII字符。
App ID全名会被追加Application Identifier Prefix(一般为TeamID.),分为两类:
Explicit App ID:唯一的App ID,用于唯一标识一个应用程序。例如“com.apple.garageband”这个App ID,用于标识Bundle Identifier为“com.apple.garageband”的App。
Wildcard App ID:含有通配符的App ID,用于标识一组应用程序。例如“”(实际上是Application Identifier Prefix)表示所有应用程序;而“com.apple.”可以表示Bundle Identifier以“com.apple.”开头(苹果公司)的所有应用程序。
一旦bundle id在开发者帐号注册以后就无法被注册了,一般你在此注册就会提示错误,所以在免证书测试的时候最好要注意不要用你即将上架的bundle id真机测试,
一般我们上架了一定要选择Explicit App ID,Wildcard包含通配符的是不允许上架的,因为你的App id是不确定的,App id的作用是将你的证书(包含推送证书)和Bundle Id联系(绑定)起来。另外我们在创建App id的时候还可以选择是否需要开通推送/wallet/iCloud/Vpn等功能,以前用Xcode7时开通了功能不需要设置对应的entitlements文件审核也可以通过,但是现在Xcdeo8开通的功能不设置的话会出现构建版本失效,所以你只要开通你需要的功能即可。另外一个星期只能创建特定值以内的App ID(具体多少不清楚了)
三.设备(Device)
Device就是运行iOS系统用于开发调试App的设备。每台Apple设备使用UDID来唯一标识。
iOS设备连接Mac后,可通过iTunes->Summary或者Xcode->Window->Devices获取iPhone的UDID(identifier)。
Apple Member Center网站个人账号下的Devices中包含了注册过的所有可用于开发和测试的设备,普通个人开发账号每年累计最多只能注册100个设备。
Apps signed by you or your team run only on designated development devices.
Apps run only on the test devices you specify.
本文的Devices是指连接到Xcode被授权用于开发测试的iOS设备(iPhone/iPad)。
另外用户要向清除掉一些已注册的UDID需要等到苹果帐号续费后帐号更新配置的时候删除才有效,否则你即使删除了其实它也会占用你的名额(100个)。
另外,当我们每次添加了新的udid相让新的设备可以安装并使用,我们都需要修改齿轮文件把新的设备添加进去生成新的齿轮文件,然后下载并使用新的。
四.齿轮文件(Provisioning Profile)
齿轮文件又名配置文件/授权文件,因为看起来像齿轮所以我称呼为齿轮文件。齿轮文件文件包含了上述的所有内容:证书、App ID和设备
屏幕快照 2016-10-27 22.59.26.png
它的作用就是将它们紧密的联系在一起。
一个Provisioning Profile对应一个Explicit App ID或Wildcard App ID(一组相同Prefix/Seed的App IDs)。在网站上手动创建一个Provisioning Profile时,需要依次指定App ID(单选)、证书(Certificates,可多选)和设备(Devices,可多选)。用户可在网站上删除(Delete)已注册的Provisioning Profiles。
Provisioning Profile也分为Development和Distribution两类,有效期同Certificate一样。
屏幕快照 2016-10-27 23.02.25.png
测试版齿轮文件一般用于真机测试,发布版齿轮文件分为AppStore和Ad Hoc两种,分别对应着发布和打包Ad Hoc版ipa包,一般测试版齿轮文件可以添加所有的测试证书,它们都是有设备限制的,这一点企业帐号也是相同的。而使用发布证书发布到App Store或者打包Ad Hoc版ipa包只能选择唯一的发布证书(分别对应着App Store 和Ad Hoc齿轮文件),所以我们需要我们钥匙串里面安装的发布证书,如果选错了最后一定提示你的证书有效但是没有安装到你的电脑本地,提示你重新创建一个新的或者导入对应的发布证书.p12文件。
屏幕快照 2016-10-27 23.16.05.png

我按照顺序从上到下讲解这四个
1.Save for iOS App Store Deployment
保存到本地 准备上传App Store ,使用的是App Store齿轮文件
2.Save for Ad Hoc Deployment
保存到本地 准备在账号添加的可使用设备上使用(具体为在开发者账户下添加可用设备的udid),该app包是发布证书编译的,即打包Ad Hoc包时使用Ad Hoc齿轮文件使用的,由设备限制
3.Save for Enterprise Deployment
这种主要针对企业级账户下 准备本地服务器分发的app,没有设备限制(企业帐号专用
4.Save for Development Deployment
针对内部测试使用,主要给开发者的设备(具体也为在开发者账户下添加可用设备的udid)。该app包是测试证书证书编译的,有设备限制
屏幕快照 2016-10-27 23.31.28.png

App id就是我们之前注册的App id,
Certificates一般来说测试的齿轮文件可能有多个,因为她是多选,但是发布的齿轮文件时单选,只会显示1
Devices对应着我们的添加的did的设备,如果为0那只有两种可能,一个是发布到AppStore使用,还有一个是打包企业包使用,它们没有设备限制也就是这里体现出来的,这个地方数字为几意味着对应的那些设备可以安装并使用你的App,否则即使你安装了也会出现闪退导致无法使用

最后感兴趣的还可以看下这个http://www.cnblogs.com/wangyang1213/p/5209119.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容