我接触苹果签名已经快六年了,最早帮本地创业团队做iOS内测分发,自己也经常封装一些H5应用成IPA自用,大大小小经手过的签名应用不下百个,从最早自己手动申请证书签名,到现在找正规服务商做稳定分发,各种坑也踩过,各种稳定的方案也试过,最近很多刚入行的朋友问我最多的问题就是P12签名证书个人开发者可以申请吗,今天就结合我这么多年的实际使用经验,给大家做个深度梳理,把签名相关的核心逻辑、各种方案的稳定性和价格都说清楚。
首先开篇就明确回答这个问题:P12签名证书个人开发者完全可以申请。只要你花99美元注册苹果官方的个人开发者计划,就能在苹果开发者后台生成开发证书和发布证书,导出之后就是带私钥的P12格式文件,整个过程都是苹果官方允许的,不存在任何违规问题。我最早自己做H5封装的个人记账工具,就是自己申请的个人P12证书,绑定了我和几个家人的UDID,一直用了快三年,从来没出过问题,稳定得离谱。唯一的限制就是苹果规定个人开发者的P12证书,最多只能绑定100台测试设备,所以个人申请的证书只适合小范围几十人的内测或者自用,做不了大规模的分发,市面上很多做超级签名的服务商,其实就是整合了大量个人开发者申请的P12证书,做成证书池来做大规模分发,这个就是我接下来要讲的证书池机制。
先说说IPA签名的核心技术原理,其实苹果签名的本质就是iOS系统的信任授权机制,苹果为了管控整个iOS应用生态,不允许未经授权的应用安装运行,任何能在iOS设备上打开的IPA包,都必须有合法的签名,这个签名是用苹果官方签发的证书生成的,苹果后台可以随时吊销某个证书的授权,如果证书被吊销,这个证书签的所有应用就会打不开,也就是行业内说的“掉签”。而P12文件就是我们把苹果签发的证书和对应的私钥加密导出后的文件,方便在各个签名工具中传输和使用,不管是个人签名还是企业签名,核心都是用有效的P12证书给IPA做授权校验。
很多人听过证书池机制,我最早用签名的时候还没有这个机制,都是单个证书用,掉了之后要好几天才能补上,非常麻烦,证书池其实就是服务商提前准备好几十上百个有效的P12证书,分类存储在一个资源池里,按照应用类型、证书来源做划分,比如专门做H5封装应用的证书池、做工具内测的证书池,互不干扰,一旦某一个证书被苹果吊销掉签,系统会自动从证书池里调出备用的有效证书做补签,很大程度上压缩了补签的时间,也提升了整体的稳定性。我现在一直合作的那个大服务商,他们的证书池每天都会补充新的证书,备用量一直保持在百分之三十以上,所以很少出现掉签之后无证书可补的情况,我那个做门店管理的H5封装应用,放在他们的证书池里,半年才掉过一次,当天就补好了,几乎不影响使用。
说到这里就得说UDID绑定,UDID是每台iOS设备的唯一识别码,苹果对于不同类型的开发者账号有不同的规则,个人开发者账号要让你的应用能在某台设备上运行,就必须把这台设备的UDID添加到开发者后台的设备列表里,也就是我们说的UDID绑定,这个规则从苹果推出开发者计划开始就一直没变。超级签名的核心逻辑其实就是基于这个规则,自动获取用户设备的UDID,然后自动从证书池里找还有空余名额的个人P12证书,自动完成绑定和签名,整个过程用户只需要点一下下载链接,不用手动复制UDID,非常方便,这也是超级签名为什么能快速普及的原因。
然后说一下重签流程,我自己也偶尔帮朋友做手动重签,整个流程其实不复杂,总结下来就是四步:第一步拿到用户提供的未签名IPA包,解压提取出应用的核心内容;第二步准备好有效的P12证书和对应的描述文件,描述文件里已经提前绑定好了证书和需要授权的UDID信息;第三步用系统的签名工具重新给应用的二进制文件做签名,替换掉原来的无效签名信息;第四步重新打包压缩成新的IPA包,就能上传分发平台给用户下载了。掉签之后的补签其实就是换一张有效的P12证书和描述文件,再走一遍这个流程,现在正规服务商都是自动化流程,掉签之后后台几分钟就能完成重签,用户只需要重新下载安装一次就能用,非常方便,我之前遇到掉签,最快一次十分钟就补好了,比我自己手动做快太多了。
接下来聊聊大家最关心的,超级签名和企业签名的真实稳定性对比,还有不同渠道的价格,我这么多年用下来,最大的感受就是,稳定性从来不是看签名类型,而是看你选的证书和渠道,当然两种签名本身的机制也决定了稳定性的差异。先说说价格,我整理一下目前市场上不同渠道的真实价格:首先企业签名,小渠道的共享证书,就是几十上百个应用共用一个企业P12证书,价格一般是一个月50到150块,非常便宜,但是这种我不推荐,我最早贪便宜买过,一周掉三次,补签到最后服务商都找不到了,稳定性极差,一分钱一分货永远是真理。然后是正规服务商的独立企业签名,就是一个证书只给你一个应用用,价格一般是一个月300到800块,年付的话大概2000到4000块,我现在用的就是这种,只要应用不违规,基本上半年才会掉一次,掉了还能免费补,稳定性非常不错,适合上千甚至上万设备的大规模分发。然后是超级签名,超级签名是按下载量收费,一般市场价是一个下载1到3块钱,下载量超过1000的话能谈到0.6到1块钱一个,我之前做一个五十人的小团队内测,一共花了不到八十块,非常划算,超级签名的机制是每个个人证书最多绑100台设备,风险非常分散,就算某一个证书被封,也只会影响100个用户,不会影响所有用户,这一点比企业签名好很多,我用超级签名这么久,从来没有出现过所有用户同时掉签的情况,最多就是一二十个用户需要重新安装,影响很小。然后是TF签名,也就是TestFlight签名,这个是苹果官方认可的内测签名方式,价格一般是一个应用包上架成功300到800块,有效期三个月,只要审核通过不违规,几乎不会掉签,稳定性是所有签名里最高的,我去年帮朋友做产品内测,走的TF签名,三个月从来没出过问题,连补签都不需要,唯一的限制就是最多只能给一万个测试用户,审核也比其他签名严一点,适合合规的中小规模内测。最后说个人自己申请P12签名,就是每年给苹果交99美元,大概六百多人民币,自己签名,适合几十人的小范围自用或者内测,成本也不高。
从稳定性上来说,我这么多年的体验,排名大概是:官方上架>TF签名>优质独立企业签名>超级签名>共享企业签名。官方上架不用说,只要能上官方App Store,完全不会掉签,用户体验最好,信任度也最高,只是很多应用比如企业内部应用、还在测试的应用,或者一些不符合苹果规则的应用没法上架,才需要用其他签名方式,很多H5封装的应用都是这种情况,本身就是给内部用或者测试用,没必要走官方上架的复杂流程,做个IPA签名就能用,非常方便。
我也遇到过掉签和证书问题,大多数掉签其实都是有原因的,要么是买了低价的共享证书,一个证书上几百个应用,只要有一个应用违规被苹果查到,整个证书所有应用都掉,这种情况我最早踩过坑,后来就再也不买低价共享签了;要么就是应用本身涉及违规内容,被用户举报或者苹果检测到,这种就算是稳定证书也会掉,只要调整内容重新补签就好了;还有就是苹果每年都会有几次大规模清理证书,会有一批证书被吊销,这种情况正规服务商的证书池都有备用证书,很快就能补好。我上次遇到大规模掉签,就是去年苹果清理企业证书,我那个应用也掉了,服务商当天就给我补好了,所有用户重新安装一次就能用,几乎没影响正常使用。
整体来说,只要选对正规的服务商,选对适合自己的签名方案,大部分签名都能保持稳定使用,我那个H5封装的门店管理工具,用稳定独立企业签名已经快两年了,一共就掉过两次,每次都是当天补好,二十多家门店用着从来没说过什么问题,体验和官方上架的应用差不了多少,对于没法上架官方的应用来说,已经足够好用了。就算偶尔出现掉签问题,现在补签流程也非常成熟,很少会影响长期使用,个人开发者如果只是小范围使用,完全可以自己申请P12证书签名,成本不高还足够稳定,是非常划算的选择。