█ 证书的种类
通常需要从苹果开发者中心下载两种文件安装在电脑上面才可以进行正式开发:
● 一种是Developer/Distribution Certification(开发/发布证书),这个和电脑系统有关,创建后,只能安装两台电脑,第三台电脑就需要从其他系统把证书导过来,再安装。
该证书的生成需要mac电脑的钥匙串访问工具(Keychain Access.app)生成XXX.certSigningRequest请求证书(包含了mac电脑的信息和用户信息),就是CSR文件。然后在开发者中心去申请iOS App Development/App Store and Ad Hoc Certification。
● 一种是Development/Distribution Provisioning Profiles (开发/发布授权文件),这个主要在真机测试、导出ipa文件、上传到appstore时使用。这个才是真正意义上的签名证书(类似android开发中的android.keystore文件)
该证书的生成需要先在Certificates, Identifiers & Profiles 界面中填写好App IDs(区分不同的app应用的id号,唯一的)和 Devices(区分不同的移动设备的UDID号,唯一的,*多只能绑定100台设备)等资料,还有前面的Certification证书,方可生成。
当然如果生成发布正式版本(App Store Distribution Provisioning Profiles)就不需要Devices,因为所有设备都可以用,而其他证书,需要选择Devices,限制了部分设备可以安装该app。

PS 1:由于Xcode 7取消了真机调试签名的验证,因此开发者可以不用创建调试证书

PS 2:设备的UDID可以通过iTunes查看

█ 证书与电脑的关系
一个苹果开发证书*多只能有2个证书,当你创建第三个证书,就会出现问题,比如前面的app的证书就会失效,此外这里说的2个证书,不包括Apple Push Services推送类型的证书。
● 2个证书如果要开发多个项目怎么办?
和android一样,不同的app是通过bundle id来区分的,因此一个证书可以开发多个app,但是不同app的bundle id要不同。
● 多台电脑同时开发多个项目怎么办?
只能通过两个CSR文件创建两个开发/发布证书(cer文件),也就是说,只能安装在两台电脑上面使用,第三台电脑就没有办法通过安装证书来获取开发的资格了。
那么第三台电脑就需要从前面两台电脑上面把cer证书对应的private key(.p12文件)导出(可以参考【相关资料】中的【 5.iOS证书(.p12)和描述文件(.mobileprovision)申请】),需设置密码。后面操作都一样,都是安装 cer或p12文件,再安装pp( Provisioning Profiles)文件。这样就可以实现一个证书在多台电脑上面开发应用。

PS 1:通过拨打开发者运营中心的客服电话了解到,确实*多只能创建2个发布证书

PS 2:采用provisioning profile+P12真机调试的方式不要求开发者知道appleID以及密码,密码一般放在leader那里

█ 发布证书与推送证书
● 每个开发者账号创建的发布证书的证书都是一样,只不过里面包含的CSR文件(包含了mac信息)内容不同。所以申请后的证书只能在该mac电脑上面安装使用。
● 每个开发者账号可以创建的证书个数是受限的(似乎是2个,目前还没具体测试),但是推送证书不算在这个数字内。
● 推送证书(Apple Push Notification service SSL )主要用来使用推送服务的。创建时,需要绑定App ID号,通常是对建好的App ID号进行编辑时,在里面上传CSR文件生成的。

%title插图%num

● 如果使用*光推送,在苹果开发者中心也不需要配置*光的相关信息,推送证书是需要密码发送推送消息的(把推送证书导出的P12文件时定义的那个密码,P12文件是给服务器使用的)
● *光也不过是对苹果的推送封装了一下而已,不可能脱离苹果的服务的,当然安卓就不是简单的封装了
● 不管是发布证书还是推送证书,过期了,就重新配置下就可以了,不会影响旧的ipa。证书的有效期通常是自创建日起1年有效期。
● 发布证书过期可能会导致app闪退,证书不符,当然也有可能是ios版本升级。正常是不会影响旧的ipa。也不会出现断层等问题,可以直接覆盖安装。
● 推送证书过期可能会导致推送服务不能正常使用。
● 推送证书的一些信息,我们也可以通过*光推送官网了解一些信息:iOS 证书设置指南 – *光文档

█ 查看证书信息的方式
● 普通方式
首先我们登陆 developer.apple.com ->点击右上角的导航Account->点击Certificates, Identifiers & Profiles -> 点击左侧栏 Certificates 下的Development -> iOS Certificates (Development):

● 特殊方式
直接登陆
https://developer.apple.com/account/ios/certificate/,如果未登录,可以登陆后,再直接访问该网址。
%title插图%num
也可以在mac电脑的钥匙串访问(keychain access.app)中查看到是否安装,以及过期时间,双击证书可以看到详情:
%title插图%num

█ 关于iOS证书过期的问题
▼ 常见问题解疑:
● Apple ID账号欠费会导致App被下架。
● 证书过期不会影响已发布的产品。未发布的产品也不会有影响。
● 证书过期导致推送会出问题,更新推送证书也不用下架重新发布,可以重新生成,只要保证 developer.apple.com 中那个 APP ID 的推送证书和推送服务器上的一致即可。
● 证书过期,重新创建证书,可能导致之前上线的没办法覆盖安装,签名不一样就没法覆盖(估计是新建PP文件导致的)
● 证书的有效期不能修改,只能重新下载。
● iOS的推送证书也有过期时间的限制的,过期后就需要开发者在苹果官网上重新生成一个证书。
▼ 解决方法:
● 先revoke你的Certificate,重新生成一个新的。
● Edit一下你的pp证书,选择新的Certificate。
● 下载覆盖之前的证书,就可以了。

PS 1:亲测过,证书过期后,已经上架appstore的app和已经安装在用户设备的app都可以正常使用。但是在mac电脑上面的证书就不能使用,导致开发者不能继续开发。因此重新生成的证书,编辑旧的PP文件(只更新旧的PP文件中的证书信息),再给mac电脑安装cer文件和pp文件,重新导出的ipa文件,安装时,不需要卸载旧的app,可以直接覆盖旧的app。

PS 2:Certificate的有效期为一年,自创建证书开始算起,而PP文件的有效期是同它关联的证书的有效期一致,证书过期了,所有和他绑定的PP文件也一起过期。

█ 安装pp( Provisioning Profiles)文件的建议:
● 进入PP文件的安装路径:
启动Xcode -> 菜单栏Perferences… ->Accounts ->View Details…->iOS Team Provisioning Profile:*->右键 Show in Finder
%title插图%num%title插图%num

安装路径为/Users/用户名/Library/MobileDevice/Provisioning Profiles。
● 命名法则:
其中一大堆序列码命名的PP文件,是通过双击PP文件自动安装的,它是用PP文件中的UUID散列去命名。

%title插图%num

这里我们也可以看到PP文件中包含了 证书、App ID、设备等信息。
● 如何自定义命名:
这个就是我们推荐的,当然也无所谓,因为可能或者你基本都没有用到,想要自定义命名,当然不能直接在这个文件夹中进行重命名,否则会出现问题。
方法一:可以直接将PP文件拷贝或拖曳到该路径(/Users/用户名/Library/MobileDevice/Provisioning Profiles)下,那么也会自动安装并以PP文件原文件名保存在该路径下。
方法二,右键PP文件,选择以iTunes方式打开。
方法三,打开应用程序中的iTunes,将PP文件拖曳到iTunes界面中。
后面两种方法比较方便,不需要找到PP文件的安装路径。因为该路径是隐藏路径,正常方法方法也不好找到。

PS 1:PP文件的真实文件名为UUID,所以双击PP文件来安装会自动用UUID来命名。
PS 2:iOS设备上每个应用程序也对应一个UUID固定值,当应用被卸载重装后UUID会被重新赋值,和之前就不同了。
PS 3:如果要删除PP文件,是可以直接在该文件夹中删除对应的PP文件,也可以在Xcode中删除

█ 关于iTunes的两个用法
● 查看设备的UDID序列号
UDID类似于人类的身份证,用来唯一区分不同的机器设备,所以理论上,每个UDID都是不重复的。UDID正常是是40位固定长度的16进制数组成。
%title插图%num
当然IOS开发者也可以通过代码来获取。还可以通过XCode 7.3.1 的Window -> Devices获取:

%title插图%num

另外也可以通过爱思助手等软件,直接检测到设备标识(UUID):

%title插图%num
● 安装ipa软件
通过iTunes来安装ipa软件,

%title插图%num

当然也可以通过91助手、二维码扫描下载app(先上传到蒲公英上或风起云飞「fir.im」等)等方式来安装ipa文件。

%title插图%num
PS 1:使用iTunes来安装ipa发现一直在同步中,可能和Apple ID账号有关吧,查看网上很多资料,安装方法和我说的是一致的。

PS 2:91助手在IOS7.0和IOS10.0上面安装证书已过期开发的ipa文件会失败,直接在appstore上面下载是可以正常安装。
█ 重要的知识点
● 开发证书可以不用创建。
● 发布证书可以随时删除,随时新建,就是多花点时间,所以证书过期什么的,都不是问题。
● PP文件(授权文件)*好创建后,不要删除,等证书新建后,直接Edit更新下证书即可(或者实际上,都可以直接删除新建也都没事,不过还未测试下,是否会导致app升级时,可否直接覆盖问题)
● 不要让Apple ID账号过期,否则导致app下架之后,等下次上传就可能导致链接不同,如果你的产品使用二维码扫描下载的话,就需要重新制作二维码,如果有纸质包装盒或者说明书,就更麻烦了

█ 相关资料:
为了研究这些证书问题,在网上查找了一些资料,也在这里分享下,作为单独的一篇文章:【IOS学习之常见问题】 关于IOS证书的那点折腾事2-百科证书
如果本文说明的还不够明白,或者想要多了解一些知识,就可以参考这些资料。
后期会陆续增加一些相关内容:
【IOS学习之常见问题】 关于IOS证书的那点折腾事3-账号续费