我研究iOS签名机制快八年了,从最早企业签名刚刚在国内流行开始,就帮身边的开发者朋友测试各种渠道,踩过的坑没有一百也有八十,今天就把我这些年攒的经验和实测结果整理出来,给需要做分发的朋友做个参考。其实很多人不理解,为什么好好的不上AppStore,非要做IPA签名?其实道理很简单,AppStore的审核规则非常严格,很多应用比如企业内部办公工具、项目测试版应用、定制化的行业工具,还有很多H5封装的业务应用,要么不符合上架要求,要么不需要面向公域用户下载,所以才需要通过签名的方式,让用户直接在iOS设备上安装应用。
先从我最早搞懂的设备签名逻辑说起吧,当年我帮前公司做内部销售OA的时候,第一次接触iOS签名,才搞明白苹果整个签名体系的核心逻辑。iOS是闭源系统,本身有非常严格的应用安装校验机制,任何想要在iOS设备上打开的应用,都必须得到苹果官方的授权,说白了就是你的IPA安装包,必须要有苹果官方认可的数字证书做签名校验,系统验证通过才会允许用户打开应用,不然就会弹出“未受信任的企业级开发者”的提示,根本没法启动。最基础的设备签名就是UDID个人签名,逻辑是开发者把需要安装应用的设备的唯一识别码UDID,提前录入到苹果开发者后台,苹果允许这个账号下的应用只在录入过的设备上安装,这种方式最早期用的多,缺点就是一个个人开发者账号最多只能绑定100台设备,适合小范围测试,没法做大规模分发。后来出现的企业签名、TF签名其实都是这个基础逻辑的延伸,只是用了不同类型的开发者账号权限,实现更大规模的分发。
接下来讲证书分发原理,其实这个逻辑也不复杂,苹果给不同类型的开发者账号颁发不同权限的数字证书,证书分发的核心就是用合法的证书给IPA签名,iOS设备会联网验证证书的合法性,验证通过就能正常使用。不同分发渠道的证书原理不一样:我们最熟悉的AppStore,是开发者把IPA上传到苹果后台后,苹果会自动对安装包做重签名,用户从AppStore下载的应用都是苹果官方签过名的,所以天然稳定,不会出现打不开的情况。我们说的第三方IPA签名,大多用的是苹果企业开发者账号生成的in-house证书,这种证书本来是给企业做内部应用分发用的,不需要提前绑定设备UDID,也没有设备数量限制,所以才被用来做第三方应用的签名分发。另一种常见的TF签名,也就是TestFlight签名,本质是苹果官方提供的应用测试分发渠道,原理是开发者把IPA上传到TestFlight后台,审核通过后给用户发邀请链接,用户通过链接就能直接在TestFlight中安装应用,整个签名都是苹果官方完成的,合法性比第三方企业签更高。而现在很多中小开发者做业务,喜欢把H5网页封装成IPA,也就是我们常说的H5封装,这种套壳应用本质也是IPA,同样需要做签名才能分发安装,我这些年帮朋友做过不下几十个H5封装的本地生活、社区团购类应用,都是封装完成后再走签名流程,才能让用户正常安装。
讲完基础原理,再说说大家都关心的Apple ID风控,这也是我踩过的最大的坑之一。早在五六年前,苹果对开发者账号的风控还没有这么严,那时候共享证书都能稳大几个月,现在苹果的风控机制越来越完善,对异常使用的开发者账号封得非常快。我总结下来,常见触发风控的原因有几个:第一是同一个开发者账号或者证书,短时间内签了大量不同的IPA,正常企业一个月也就签几个内部应用,要是一个证书一周签几十个上百个,很容易被苹果的风控系统标记,直接封证书;第二是同一个证书下有违规应用,哪怕你自己的应用是合规的,只要同证书里有一个涉赌、涉黄或者其他违规的应用,被苹果检测到之后,整个证书和对应的开发者账号都会被封禁,所有签过的应用都会集体掉签;第三就是用了非正规渠道获取的Apple ID,比如很多商家用买来的黑号、盗来的号注册开发者账号,原账号所有者挂失之后,苹果会直接封禁账号,同样会导致所有签名失效。我印象最深的一次,五年前帮朋友做一个线下培训的内部应用,找了一个报价很低的渠道,结果刚上线三天就全掉签了,问了商家才知道,他们用的开发者账号是买来的黑号,原主人找回之后苹果直接封了,那时候正好赶上培训开课,几千个学员等着用应用看资料,最后临时找渠道重签花了两倍的钱,还耽误了大半天的课程,给朋友造成了不小的损失,从那以后我就特别重视Apple ID风控的问题,也开始深入研究独享证书和共享证书的区别。
其实独享证书和共享证书的区别非常好理解,共享证书就是商家把同一个企业证书分给几十上百个客户共用,大家一起分摊证书的成本,所以报价非常低。而独享证书就是整个证书只给你一个人用,你签多少应用都是你自己的,不和任何第三方共用。价格方面我接触过不同渠道,差异真的非常大:共享证书的话,小个人渠道一般一个月几十到一百多块,大一点的渠道共享签也就在两百到三百块一个月,确实非常便宜;而独享证书,全新的独享企业证书一般一个月一千多到三千多不等,一年下来也要一万多到几万,价格差了十倍都不止。但稳定性的差异比价格差更大,我之前用共享签名,最多一个月掉过五次签,每次掉签都要重新导出安装包,重新给用户发下载链接,用户怨声载道,流失非常严重,核心原因就是共享证书里鱼龙混杂,总有客户签违规应用,一不小心就整个证书被封,集体掉签。而独享证书只有你自己的应用,只要你的应用本身合规,基本不会触发风控,掉签概率低了不止一点。
去年我特意做了一次长达三个月的稳定性实测,找了四个不同渠道的主流签名方式,签同一个合规的内部考勤IPA,来测试稳定性,结果非常直观:第一个是小渠道共享企业签,报价99块用三个月,结果第一周还没结束就掉签了,补签之后不到12天又掉了,整整三个月掉了八次,平均不到12天掉一次,稳定性几乎为零,只适合个人自己测试用,绝对不能给正式用户用;第二个是大渠道共享企业签,报价299一个月,三个月一共897块,三个月掉了三次,平均一个月掉一次,比小渠道好,但还是不稳定,最后一次掉签就是因为同证书有一个违规应用被苹果检测到,全证书被封,连带着我的应用也打不开;第三个是大渠道的全新独享企业签,报价1600一个月,三个月一共4800块,实测下来三个月只掉过一次,还是赶上苹果那次大规模清理企业证书,商家半个小时就给换了新证书重新签好了,用户几乎没有感知,两千多个安装用户全程没有出现打不开应用的情况,稳定性非常不错;第四个是正规的TF签名,我用自己的个人开发者账号上传,加上服务费一共花了不到1300块,三个月实测一次都没掉过,因为TF本身就是苹果官方的渠道,只要应用不违规,苹果不会随便下架,唯一的问题就是TF最多只能容纳一万个测试用户,而且审核比企业签严,H5封装的应用如果有不符合规则的内容很容易过不了审,要是用户量不超过一万,能过审核,TF的稳定性比独享企业签还高。
说到这里就必须提苹果ios签名数据安全这个核心问题,很多开发者只看重价格和稳定性,忽略了数据安全,我就见过朋友吃过这方面的大亏。前几年有个做信贷服务的朋友,为了省钱找了一个报价很低的小渠道做IPA签名,结果不到一个月,就有十几个用户反映个人信息泄露,还有用户收到了很多诈骗电话,最后查出来是不良商家在给IPA签名的时候,偷偷注入了窃取用户信息的木马代码,把用户的通讯录、位置信息甚至支付验证码都传到了商家的服务器,差点给朋友的公司带来灭顶之灾。还有很多共享证书的渠道,用的是黑产流出的证书,本身就带有风险,要是你做的是内部应用,涉及企业机密或者用户隐私,很容易被别有用心的人窃取数据。所以我在这里也要给大家做个重要提醒:做iOS签名一定要把数据安全放在第一位,不要贪便宜找没有资质的小渠道,尤其是涉及用户信息、交易的H5封装应用,更要选择正规渠道,避免出现数据泄露的问题。
这么多年玩下来,我最大的感受就是一分钱一分货,便宜的共享签名看起来省下了不少成本,但是掉签带来的用户流失、业务中断,还有可能存在的数据安全风险,远远比省下的那点签名成本高得多。如果只是小范围个人测试,用便宜的共享签没问题,要是给正式用户用,能上TF签名就优先选TF,价格不高,还是苹果官方渠道,稳定又安全,适合用户量不超过一万的应用;如果用户量超过一万,或者过不了TF审核,那就选正规的独享证书,虽然贵一点,但是稳定,不会动不动掉签影响业务,绝对物有所值。毕竟对于做业务的开发者来说,应用能稳定打开,用户信息安全,才是最重要的。很多开发者一开始总想着先省点钱,用便宜的签名试试水,结果出了问题再换,不仅浪费时间,还流失了最早一批种子用户,反而得不偿失。选对符合自己需求的签名渠道,把安全和稳定放在前面,才是做iOS分发的正确思路。