前言
好久没打过包,也没上传过App Store应用了,最近因为开发需要,又需要折腾证书这块东西,发现这块知识掌握的不牢,以前所了解的也有些模糊,导致使用时出现各种问题,究其原因还是自己理解的不够深!这篇文章就是根据自己的理解以及查找相关资料对此问题做的一个记录。
一、基本常识
1、App ID(bundle identifier)
App ID 是根据应用的boundID生成的,是APP的唯一标识。如果在开发阶段没有生成App ID,苹果会生成一个通配的Wildcard 来匹配应用。在生成App ID 时要注意格式。
2、设备(Device)
Device就是运行iOS系统用于开发调试App的设备。每台Apple设备使用UDID来唯一标识。
公司账号和个人账号,只能添加100台设备,一年才可以修改一次。所以添加设备时要慎用
企业账号对设备的数量没有限制,不过它不能上架App Store,至于他们的区别,自己谷歌吧。
3、证书(Certificate)
iOS证书分为两类:Development和Production(Distribution)。
Development证书用来开发和调试应用程序,Production主要用来发布应用程序到苹果商店。
普通个人开发账号最多可注册iOS Distribution证书2个,Development证书5个,用户可在网站上删除(Revoke)已注册的Certificate。
注意:
a.证书过期了不会影响已上线版本 b.开发者帐号过期了会影响线上版本
至于证书的申请流程,很简单,在这里就不一一赘述,简单说一下公钥和私钥
公钥(public key):公钥被包含在证书里,证书又被包含在描述文件(Provisioning File)中,描述文件在应用被安装的时候会被拷贝到iOS设备中。iOS安全系统通过证书就能够确定开发者身份,就能够通过从证书中获取到的公钥来验证开发者用该公钥对应的私钥签名后的代码、资源文件等有没有被更改破坏,最终确定应用能否合法的在iOS设备上合法运行。
私钥(private key):每个证书(其实是公钥)都对应有一个私钥,私钥会被用来对代码、资源文件等签名。只有开发证书和描述文件是没办法正常调试的,因为没有私钥根本无法签名。
4、Provisioning Profiles文件
描述文件包含了APP的基本信息:证书、App ID和设备。Provisioning Profile也分为Development和Distribution两类,有效期同Certificate一样。Distribution版本的ProvisioningProfile主要用于提交App Store审核,Development版本主要用于真机测试。
5、 developerprofile(授权文件)
授权文件主要是在多人开发是用到的,其中包含了:账户信息,相关的证书,描述文件等
二、自动管理证书和手动管理证书
1、自动管理证书的原则是根据你创建的APP ID来匹配证书和配置文件,而手动管理证书需要手动去配置,每次作出修改,都需要重新再网站上生成,然后下发给各个团队成员,不利于团队的开发。
2、手动管理证书的证书和App ID 的生成还需要在官网上生成。
3、省事,开发和发布证书安装好了之后,Xcode会自动其匹配,避免因为证书和描述文件过多而选错的问题。
4、在开发阶段,设置自动管理证书,就不需要去网站一步步的去生成相关文件,只需要把开发账号添加到账户中去,账号会根据根据你的MAC电脑自动生成开发证书、通配的App ID以及描述文件。
三、多人开发时共享开发账户/证书
新人加入团队开发时,不可避免要真机测试和打包发布,这时就需要安装证书和授权等,获得此权限有两种方式:
注意: Apple 为了安全的考量,將 private key 存在当初生成 Certificate 的 Mac 上。如此除非 Mac 的主人主动从它的 Mac 输出 private key 给你,你才能搭配Certificate 制作、测试、上架 App。如果生成cer的MAC丢失或者是相关人员离职,也就是丢失了私钥,就只能revoke掉,创建新的证书。
第一种方式:通过developerprofile文件给团队成员,此文件包含了 certificate, private key 和 profile
具体是在Xcode | Prefrences | Account 中导出,不过这样会把该账户下的所有证书和描述文件都导出,如下图:
第二种方式:导出P12文件,需要注意的是P12文件必须包含公钥和私钥。如下图:
22CDBD38-A16B-4387-A506-C6A2E3CDEFA0.png
四、iOS证书管理
开发团队的人员越多,合理的证书管理愈显重要。流程上,为保证日常开发应用程序的安全与效率,无论是大到公司的发布证书抑或是小到项目组的团队个人开发证书,我们都尽量做到:
1、帐号密码统一由一个人管理,避免多人创建证书,导致混乱。
2、开发人员统一到管理员领取.p12文件与Provision Profile文件或者是developerprofile来进行应用开发或发布;
3、新增设备,提供设备名与UDID到证书管理员添加。
五、苹果开发者账号管理后台权限
苹果提供了Agent、Admin、Member、No Access四种团队身份,它们分别拥有不同的权限。
Agent:代理人。这个账号就是创建团队的账号,它拥有最大权限,且不会允许其他Admin修改Agent权限。但是Agent账号可以将权限转移。
Admin:管理员。它拥有几乎所有内容的管理权限
Member:成员。有权访问、下载一些信息,但是不能进行修改、管理
No Access:无权限。(因为后台有iOS、Mac、Safari三个模块,因此每个模块可以限定是否可以访问)
写的有些粗糙,有些理解的东西,在这里就不用文字详述了,欢迎下面留言!
网友评论