Certificates 证书
我们从开发者中心了解到,开发者证书分为两种类型:
Development Certificate
(开发证书)和Production Certificate
(发布证书)。两种证书都有对应的附属证书,包括推送证书、Apple Pay证书、Pass Type ID证书等等一系列附属证书。需要注意的是,当我们发布应用到 AppStore 时,发布的电脑必须具备两个条件:
- 安装了创建这个发布证书的电脑导出的p12文件
- 从
开发者账号
下载了发布证书
证书的作用
当某台电脑安装开发者证书后,这台电脑是如何拥有这种能力的呢?
苹果在此运用了代码签名技术。代码签名验证允许我们的操作系统来判断是谁(你或者信任的团队成员)对App进行了签名。
Xcode会在项目编译期间使用你的代码签名验证,这个验证由一个由Apple认证过的
公钥-私钥对
组成,存储在你的Keychain
(下简称钥匙串)中,公钥包含在证书(Certificates)中,公钥证书
在本地钥匙串和开发者账号都有存储。另外,还有一个我们可以叫做
媒介证书
(Intermediate Certificate)的证书来确保我们的证书(Certificates)是经过授权而发布的。当安装好Xcode时,媒介证书
就已经安装到我们的钥匙串
中去了。如果你不小心删除了你的媒介证书
,不用担心。你可以重新下载它。通过在
开发者账号
(Developer Account)和本地(Mac)都经过验证的证书(Certificate)我们就可以利用合法的证书进行App的测试和发布了。
方法一:快捷创建法(利用Xcode创建)
方法二:创建CSR文件及证书制作
1. 打开电脑中的钥匙串访问
2. 选择菜单钥匙串访问
-证书助理
-从证书颁发机构请求证书
3. 输入你的Email地址和名字,确保Email地址和名字与你注册为iOS开发者时登记的相一致(不一致也没关系)
其中 CA电子邮箱地址 栏目可以为空
4. 选择保存到磁盘(Saves to Disk),建议保存到桌面,方便查找
5. 打开开发者中心,登录开发者账号
6. 选择Certificates, Identifiers & Profiles
进入,然后选择Certificates
7. 选择Certificates
,在右侧选择添加按钮添加
8. 选择iOS App Development
,用于真机调试的Certificates
文件,点击Continue
。然后接下来会让你创建CSR文件(Create a CSR file),点击Continue
进入下一步上传CSR文件
9. 点击Choose File
选择刚刚存储在桌面的SCR文件,然后点击Generate
。一会就生成我们想要的证书啦!
10. 我们可以将刚刚生成的证书点击Download
下载到本地使用
证书的使用
如果开发者B,登录开发者账号
,下载证书(cer文件)运行,只有证书没有私钥,是不能正常使用的。所以如果有新同事加入到开发组的时候,应该从本地钥匙串中选择证书,一定要记得展开证书那一条显示出私钥并将两行都选中,右键导出2项,输入密码之后就生成p12文件(包含证书和私钥)给同事。
另外可以给同事一份描述文件(Provisioning Profiles),用于本地开发识别测试设备。
需要强调一点,证书和项目关系其实并不大,证书一般有效期只有一年,当证书过期后,只需要重新生成一份证书,上传到开发者账号
就行,同时因为原有证书过期,需要重新生成Provisioning Profiles
文件。然后给同事们最新的p12文件和Provisioning Profiles文件就行
所以开发者账号
中的证书,配置文件是可以放心操作的(比如误删了,或者找不到证书私钥了)
证书过期/即将过期
网上很多说法,但是讲的对我来说还不够完善,所以这里统一一下,也方便自己查阅。
疑问一:证书过期了,会影响到 AppStore 上面的应用吗?
答:证书过期不会影响已上架 AppStore 应用,但是推送会出问题,更新推送证书也不用下架重新发布,可以重新生成,只要保证 developer.apple.com 中那个 APP ID 的推送证书和推送服务器上的一致即可。但是账号欠费的话应用会被下架。
疑问二:证书过期了/即将过期怎么办?
答:首先,打开密钥中心,生成一个CSR(证书请求)。然后,到Apple Center把证书revoke,然后新建一个,新建的将会默认是刚刚revoke的证书的所有设置的。把下载回来的证书导出一份p12格式的保存起来(因为如果其他人需要的时候,只能跟你拿了,在Apple Center下载的用不了的。原因是还需要你电脑的密钥)然后去provision profile edit 一下,从新下载,替换掉原来的。你就可以继续开发了。不需要提交新 App 到 AppStore。
疑问三:revoke证书对APP的影响
revoke证书对生产、测试环境的影响
(1)revoke生产环境证书是不会影响已上架的APP。
(2)revoke开发环境证书,则安装过该证书的APP的用户将无法打开该APP了,并且一点击APP会出现闪退现象。这时就需要开发人员重新生成开发证书后打包APP了。Missing private key出现的原因
(1)忘记Mac开机密码,在开机时进入终端重设密码,会导致私有key丢失。
(2)证书生成的源电脑不是你所用的电脑,要向源电脑请求p12文件和描述文件。具体可见“在团队中,证书文件管理”。在团队中,证书文件管理
用Xcode打包时,有时系统会提示“missing private key”等错误。打开钥匙串,在“登录”选项查看种类为“证书”的名称,是否含有三角符号,没有代表缺失private key 。如下图:
👉官方资料
Provisioning Profiles 描述文件
在这里,我引用别人的一段话,因为觉得写得很喜感,但又很实在。
我想这个界面一弹出来的时候,蛋蛋忧伤迎面扑来。然后怒点 Fix issue,然后你们团队负责管理证书的基友突然发现证书中心多了好多好乱的证书以及描述文件,然后他爆了一句:what the f××k!删掉了带有Xcode *的证书以及描述文件,然后自己又暴力的点了一发Fix issue,然后你突然调试不了了,再暴击Fix issue键,最后整个团队都只有通过Fix issue来真机调试了…
所以慎点Fix issue,如果点击这个选项,聪明的(
蠢哭的)Xcode就会自己管理描述文件,然后各种莫名其妙的带有Xcode *的证书以及描述文件…其实只要坚信一点,证书、设备ID、AppID、描述文件都弄对了就绝逼不会出问题的!
描述文件过期
苹果官方文档写明,企业证书有效期是3年,而描述文件只有1年有效期。所以当你的描述文件过期(expire)时。不用慌张,我看到网上好多朋友说删除重新生成,其实不用这么麻烦,只需要3步完成:点击过期的描述文件展开详情界面
-点击Edit按钮
-点击Generate按钮
再一次感谢您花费时间阅读这篇文章!
微博: @Danny_吕昌辉
博客: SuperDanny