我接触苹果签名快六年了,最早帮创业朋友做APP内测的时候开始接触,从最早自己折腾个人证书签名,到后来用企业签名、超级签名,大大小小踩过不下几十个坑,也见过太多人因为贪便宜用了劣质证书,掉签掉得丢失大半用户,最近半个月连续有三个做H5封装的朋友问我P12企业签名证书被举报怎么办,索性整理了这么多年我自己的深度使用经验,从技术原理到实际使用的稳定性、价格都说透,给想要做IPA签名的朋友做个参考。
很多新手刚接触苹果签名,都觉得这是什么神秘技术,其实说透了原理非常清晰:iOS作为闭源生态,苹果对所有安装到系统里的APP都有严格的校验机制,只有经过苹果信任的签名,才能正常安装打开,核心原理就是非对称加密:苹果手握最高权限的根证书,开发者申请开发者账号之后,会得到一对公钥和私钥,私钥会封装在我们常说的P12文件里,我们给IPA包签名的时候,就是用P12里的私钥对IPA包的二进制内容进行加密签名,用户安装APP的时候,iOS系统会提取签名里的信息,去苹果服务器验证对应的公钥,如果苹果信任这个证书,就允许安装,如果证书已经被吊销或者验证不通过,就会提示“未受信任的企业开发者”或者直接无法安装。
现在很多做移动端项目的朋友,都是先把H5项目封装成IPA包,也就是我们说的H5封装,再做IPA签名,就能让用户直接在手机上安装,不用每次打开浏览器访问,体验和原生APP几乎没区别,这也是现在中小项目非常流行的做法。如果能通过苹果审核走官方上架,当然体验最好,用户直接从App Store下载,信任度最高也不会掉签,但现实情况是,很多内侧应用、行业定制APP、不符合苹果规范的应用根本过不了官方上架的审核,所以才需要用企业签名、超级签名、TF签名这类方式来实现不上架也能正常安装。
我最早用企业签名的时候,那时候很多小服务商都是一张P12证书放几百上千个APP,不管是什么类型的APP都堆在一起,一旦有一个违规APP被用户举报,苹果就会直接吊销这张P12证书,上面所有APP全部掉签,这也是很多人觉得企业签名不稳定的根源。现在正规成熟的签名服务商,都在做证书池机制,说白了就是储备几十上百张不同企业主体申请的正规P12证书,搭建一个统一的资源调度池,根据APP的类型、预估下载量来分配证书,违规风险高的APP不会放在同一张证书里,单张证书放置的APP数量也会严格控制,不会像以前那样堆几百个。就我现在合作的服务商,他们的证书池有两百多张正规企业证书,每张证书最多放三十个APP,所以哪怕某一张证书因为上面的某个APP被举报,P12证书被吊销,也只会影响极少数用户,而且服务商可以直接从证书池里调新的证书给你补签,整个过程一般半小时以内就能完成,对业务影响很小。我去年就遇到过一次这样的情况,我做的一个本地美食折扣的H5封装IPA,分配的那张证书上有一个违规APP偷偷混进去被举报了,整张证书被苹果吊销,我的APP也跟着掉签,我当时早上九点找服务商,九点二十就给我换好新证书补签完成,我只需要把新的下载链接发到用户群里,大部分用户重新安装一次就好了,只流失了十几个不活跃用户,整体影响很小,换做是以前小服务商的单证书模式,可能要好几天才能补好,用户都跑光了。
UDID绑定是很多签名方式里核心的一步,UDID是苹果每台设备独一无二的识别码,超级签名和TF签名都需要用到UDID绑定,超级签名本质就是用个人开发者账号来做签名,每个个人开发者账号最多只能绑定100台设备的UDID,所以每新增一个用户安装,都需要先获取用户设备的UDID,把UDID添加到开发者后台绑定,再针对这台设备的UDID生成对应的描述文件,给IPA签名之后用户才能安装。和超级签名不同,企业签名不需要绑定UDID,任何设备只要下载了签名后的IPA都能安装,所以企业签名更适合用户量比较大的项目。我最早做超级签名的时候,遇到过好几次UDID绑定失败的问题,要么是用户设备越狱了UDID获取出错,要么是服务商后台添加UDID延迟,不过现在技术都成熟了,大部分服务商都有自动获取UDID的H5页面,用户点一下就能自动获取,出错率不到1%,基本不用操心。
我自己也手动做过重签,给大家说一下完整的标准重签流程,第一步是准备好未签名或者需要更换签名的IPA安装包,不管是原生开发的还是H5封装出来的,都是这个流程;第二步是选择对应签名类型的证书和描述文件,企业签名用P12企业证书和对应描述文件,超级签名用绑定好UDID的个人证书和描述文件;第三步是脱壳,去掉IPA包原有的旧签名信息;第四步就是用新的证书和描述文件对IPA包重新签名,生成新的IPA安装包和下载链接;最后就是把下载链接给用户,用户就能安装了。如果你的证书本身已经被吊销或者被举报,重签就会失败,这时候只能更换新的证书重新签名。
我用过这么多种签名,说点真话,网上很多人说超级签名比企业签名稳定,其实真的不一定,分你选什么渠道什么品质。先说价格,现在市面上不同渠道的价格差很大,企业签名分共享证书和独立稳定证书,共享证书就是很多商家很多客户共用一张P12证书,价格非常便宜,一般一个月只要几十块钱,一年也不到一百,但是稳定性极差,我早年贪便宜用过,一周掉三次,补签都补不过来,根本没法用。独立稳定证书的企业签名,就是单张证书只放少量客户的APP,正规渠道一般一个季度300-600,一年1200-2000,这个价格是比较合理的。超级签名现在一般都是按下载量收费,单个下载2-5块,一千个下载大概1500-2000,下载量越大单个价格越便宜,但是如果你的APP爆量,成本会非常高,我前年做裂变活动,本来预计一天几百下载,结果一天爆了一万多下载,光签名成本就花了三万多,现在想想都肉疼。TF签名一般是包上架成功,一次收费300-800,上架成功后正常可以用三到六个月,官方上架的话,自己申请开发者账号只要99美元年费,找代办过审的话几千到几万不等,看APP类型。
说到稳定性对比,我自己用下来,正规证书池的企业签名,稳定性其实比大部分超级签名还要好,超级签名的问题在于,很多服务商都是收罗大量散户的个人开发者证书来做签名,一旦其中多个证书被苹果封号,就很容易出现大规模掉签,而且超级签名按下载收费,用户重复下载还要重复收费,长期用成本比企业签名高太多。我现在五个在线运营的H5封装APP,都是用的正规企业签名,其中三个已经稳定运行超过八个月没掉过签,只有两个遇到过一次掉签,都是因为证书被举报,补签也很快,完全不影响使用。而超级签名我之前用了半年,掉了四次签,成本还比企业签名高了一倍,早就不用了。TF签名的稳定性是最高的,毕竟是苹果官方的测试通道,只要你不违规,基本不会掉签,但是缺点也很明显,一个TF链接最多一万次下载,用户需要安装TestFlight才能用,很多用户嫌麻烦不愿意装,所以更适合内测或者小体量的项目。
回到大家最关心的问题,P12企业签名证书被举报怎么办?我给大家说我总结的处理方法,首先,如果这个P12证书是你自己申请的,先登录开发者后台,把被举报的违规APP删除,撤掉对应的描述文件,然后换一张新的P12证书给你的APP重签就可以了,只要你的APP本身没有违规,不会受到牵连。如果你是找第三方签名服务商做的签名,那只要你找的是正规有证书池的服务商,基本不用你操心,服务商都会免费给你补签换证书,半小时以内就能搞定,我两次遇到这种情况都是这么解决的,完全没问题。最怕的就是你贪便宜用了共享证书或者黑证,那种证书被举报之后,服务商根本没有多余的证书给你换,甚至直接跑路,你只能重新找服务商签名,损失用户又损失钱。
这么多年用下来,我最大的感受就是,苹果签名真的是一分钱一分货,不要贪便宜找那种几十块钱一年的,正规稳定的签名虽然价格高一点,但是能帮你省很多心,大部分时候都是稳定运行,掉签只是小概率事件,补签也很方便,完全可以满足不官方上架的APP安装需求,只要选对正规服务商,不用太担心证书被举报的问题,遇到问题及时补签换证书就可以继续正常使用。