更新 App store 发布证书
分三步去更新
- 首先找到已过期的APP ID;
- 根据APP ID重新生成Certifictes;
- 更新Provisioning Profiles.
示例
1.确定已过期的 APP ID
1.1 找到已过期或者即将过期的 APP ID(Xcode 中为bundle id),位于图图1-1中3所在位置。将该 APP ID (以下简称id)记录下来。
2.根据APP ID重新生成Certifictes
2.1 点击 Certificates 中的 Production可以看到所有的生产环境的证书,同时也可以看到是否过期。选择右上角的新建+,如下图所示。
选择证书的适用的场景,
(1)Development 对应 xcode 中的debug环境,开发调试的使用,包含了推送与非推送版本。
(2)Production 对应 xcode 中的 release 环境,也即是上线 app store 的环境, 常用的是有不带推送的、带推送的、带apple pay的证书。
示例就以生产中带推送的做参考,选择 Apple Push Notification, 点击Continue。
选择需要更新的APP ID, 点击Continue
出现创建CSR文件的界面,里面说明了创建的步骤。下面我们按照步骤创建CSR。
在mac应用程序中找到 “钥匙串访问”,打开“钥匙串访问”app,
在导航栏中点击“钥匙串访问”-> “证书助理” -> “从证书颁发机构请求证书”,
输入邮箱地址,常用名称,选择存储到磁盘,点击“继续”.其中常用名称可以采用公司名称+app名称+环境名
输入名称名称, 选择存储位置, 点击”存储”. 将请求下来的的CSR证书保存在桌面上。
回到创建证书的页面,点击”Continu”
出现选择证书的页面,点击”Choose File…”
找到之前创建的CSR文件,点击”选取”
上传CSR文件, 点击“Continue”
上传完成之后,证书就生成完毕, 点击”Download”,下载到本地磁盘。
下载完毕后会得到一个aps.cer证书, 但是不能直接发给别人使用, 需要双击cer文件,安装到钥匙串中,然后导出为.p12文件.
接下来说明一下导出P12文件给服务器使用。
在钥匙串中找到对应id的证书(可以通过id+证书名称确定)
选择导出“Apple Push Service: xxxxx”
弹出保存框, 输入存储名称,选择存储位置,点击”存储”。存储名称建议使用公司名称+app名称+环境+apns的形式,方便以管理。
输入导出的密码, 此密码用于其他人员读取P12文件时使用。
输入电脑登录用户的密码,点击“允许”。此处成功导出P12推送证书。备注:有的服务器只识别pem格式的文件,需要将P12格式转换为pem格式的。
再次回到apple deleloper 页面,找到已过期的的描述文件(Provisioning Profiles),点击“Edit”,
选择对应的App ID 以及 Certificates, 点击 “Generate”
到此新的Provisioning Profiles 已生成,点击”Download”
刚才已过期的 Provisioning Profiles 的 Status has changed to Active
按照同样的方式,更新development 下的Certificates & Provisioning Profiles
一共产生了5个文件,如下图所示
序列 | 示例 | 名称 | 说明 |
---|---|---|---|
1 | BOCI_appName_development_apns.p12 | Apple Push Development Certificate | xcode debug app |
2 | BOCI_appName_distribution_apns.p12 | Apple Push Production Certificate | xcode release app/backend push server |
3 | BOCI_appName_distribution_apns.mobileprovision | Production Provisioning Profiles | xcode release app |
4 | BOCI_appName_development_apns.mobileprovision | Development Provisioning Profiles | xcode debug app |
5 | BOCI_appName_distribution_apns.certSigningRequest | CSR | 自己保留 |
将1-4的文件发送给开发人员,开发人员根据新的证书重新打包ipa,上线发布app就可以了。