我研究iOS签名机制快八年了,从最早帮圈内朋友做内测应用签名,到现在帮不少中小企业处理定制应用的分发需求,踩过的坑比吃过的饭还多,今天就把我这些年摸透的逻辑、踩过的坑、实测出来的经验都摊开说清楚,也顺便把很多新手问爆的P12证书申请问题说透。
先从最基础的设备签名逻辑说起吧,我刚接触这行的时候,以为签名就是给IPA文件盖个假章,让iOS系统放过就行,后来才明白,整个iOS是完完全全的封闭生态,任何能在设备上运行的应用,都必须拿到苹果信任体系的合法签名,说白了就是苹果点头认可了,你才能装。设备签名的核心逻辑,其实是依托苹果开发者体系,把需要安装应用的设备UDID,提前加到开发者账号的授权设备列表里,再结合对应的证书生成描述文件,最终用证书给IPA签名,这样设备安装的时候,苹果验证通过,就能绕开AppStore直接运行,这也是IPA签名最核心的作用——给无法上架AppStore的应用提供合法安装的可能。现在市面上很多中小商家做的H5封装App,大多都不符合AppStore的上架要求,要么是功能涉及内部使用,要么是封装的内容有部分不符合审核规则,根本没法正式上架,所以基本都走IPA签名的分发路线,这点我接触的最多。
再说说证书分发原理,我们常说的P12证书,其实就是把苹果开发者账号生成的证书,加上私钥导出后的文件,整个分发验证的逻辑是:苹果服务器存着你的证书公钥,我们用保存在P12里的私钥给IPA包做签名加密,用户设备安装的时候,系统会自动对接苹果服务器验证公钥信息,确认证书在苹果的信任列表里,才会允许安装运行。不同类型的证书分发逻辑不一样:比如99美元个人开发者账号的证书,最多只能授权100台设备,适合小范围内测;299美元企业开发者账号的证书,可以不限制设备数量分发,适合给更多用户使用,这也是现在企业签名的核心来源。那TF签名呢?TF签名本质是依托苹果官方的TestFlight内测平台分发,签名本身就是苹果官方颁发的,相当于你把应用放到苹果自己的内测渠道里,所以规则完全走苹果官方的流程,和企业签名的第三方分发逻辑完全不一样。很多人问为什么TF签名更稳定?就是因为它本身就是苹果允许的分发方式,只要你应用不违规,苹果不会随便下架,这点比企业签名稳太多。
聊完基础逻辑,就得说大家最关心的Apple ID风控了,这点我真的踩过天大的坑,五六年前我刚做这行的时候,为了多做几个证书降低成本,注册了二十多个Apple ID,全都挂在同一台服务器上登录,还同一IP连续注册,结果不到半个月,十几个账号直接被苹果封禁,证书全部吊销,手上二十多个客户的App全掉签,我赔了小十万才把事情摆平,从那之后我才摸透苹果的风控规则。现在苹果的风控机制比那时候还要严,你的IP是不是干净、注册用的设备有没有越狱改参数、Apple ID有没有频繁切换地区、多个账号是不是绑定了相同的支付信息甚至相同的收货地址,甚至短时间内频繁登录登出,都会触发风控标记,一旦标记,要么账号直接封,要么证书很快被吊销。现在市面上很多便宜签名为什么掉签快?本质就是背后的Apple ID要么是风控标记过的黑号,要么是盗用身份注册的,本身就不稳定,被封只是早晚的事。
接下来聊聊大家问的最多的独享证书和共享证书,还有我这么多年实测出来的稳定性和价格感受。我最早刚开始做的时候,贪便宜一直用共享证书,什么是共享证书?就是一个企业P12证书,服务商挂几百上千个App,平摊成本,所以价格卖的特别便宜,我当时拿的共享签名,一个App一个月才30块钱,比独享便宜了十几倍,看起来性价比极高,可实际用起来能把人折腾疯。我去年特意做过三个月的稳定性实测,把同一个H5封装的内部办公IPA,分别做了共享企业签名、独享企业签名、TF签名,全程记录掉签情况:共享签名那个,安装完第三天就掉了,找服务商补签,第十一天又掉了,三个月下来总共掉了11次,平均不到一周掉一次,有时候刚给客户安装完,第二天用户打开就提示无法验证应用,客户投诉不说,还得不停补签,折腾到最后客户直接换了别家。再看我用的独享证书,独享证书就是一个证书只给一个客户用,最多挂两三个合规App,不会几百个App挤一个证书,我实测的这个,三个月只掉过一次,还是因为服务商的机房IP出问题触发了苹果风控,补签之后一直用到现在,快一年了都没再掉过,稳定性差的不是一点半点。TF签名就更稳了,三个月到现在,链接一直有效,从来没掉过,唯一就是TF每个链接最多一万次下载,满了之后重新发一个就行,对于大部分内部应用或者小范围使用的App来说完全够用。
说到价格,不同渠道不同类型的签名价格差真的特别大,我接触过这么多渠道,共享签名一般几块钱到一百多块一个月不等,很多个人卖家甚至几块钱就能给你签,但是基本没有售后,掉签了找不到人是常事,我之前就遇到过收了钱给我签了共享,半个月掉签之后直接把我拉黑,钱也打了水漂。独享证书的话,价格从几百块一个月到几千块一年不等,正规渠道的企业独享证书一年也就几千块,算下来一个月才几百块,对于做业务的人来说,这点钱真的不算什么,换回来长期稳定不用折腾,太值了。TF签名一般是按下载量算,两三百块一千次下载,五六百块一万次,能用大半年,对于用户量不大的应用来说,性价比也很高,比便宜的共享签名靠谱太多。很多新手一开始只看价格,觉得能签就行,越便宜越好,结果掉签掉的业务都做不下去,好不容易积累的用户全跑了,反而亏了更多,我常跟客户说,签名这行,稳定就是最大的省钱,真的是我踩了无数坑总结出来的道理。
最后回到最开始大家问的问题:P12签名证书申请需要邓白氏编码吗?其实这个问题分情况,很多人混淆了个人和企业的申请场景,如果你是申请个人开发者账号的P12证书,只需要99美元的年费,填写个人身份信息就能申请,完全不需要邓白氏编码,毕竟个人开发者不需要苹果验证企业主体,个人身份信息就足够了。如果你是申请企业级开发者账号的P12证书,用来做不限设备的企业分发签名,那就必须要有邓白氏编码,因为苹果要验证你的企业主体是真实合法存在的,没有邓白氏编码根本没法通过企业开发者账号的申请,自然也就没法生成对应的企业级P12证书。
这么多年玩下来,我最大的感受就是,iOS签名从来没有什么绝对不掉签的万能方案,但是选对类型选对渠道,完全可以做到长期稳定可用,对于没法上架AppStore的H5封装或者内部应用来说,要么选正规的独享证书,要么选TF签名,虽然价格比共享贵一点,但是不用天天担心掉签,能安安心心做业务,比什么都强。我现在手上几十个客户,大多用的都是独享证书或者TF签名,最长的一个H5封装的客户应用,已经稳定跑了三年多,从来没因为掉签影响过业务,这就是稳定最大的好处。