我玩iOS签名机制快八年了,从最早帮朋友做内测签名踩坑,到现在帮几十家企业做内部应用签名分发,大大小小的坑我几乎都踩过,今天就结合我这么多年的经验,聊聊苹果企业签名内部使用规范里那些大家都关心的核心问题,从底层逻辑到实际体验,给想要做内部应用分发的朋友做个参考。
先从最基础的设备签名逻辑说起吧,我刚接触签名的时候,以为签名就是给IPA包随便盖个章就能装,后来研究了苹果的整个体系才明白,iOS是闭源系统,所有安装到设备上的第三方应用,都必须经过苹果信任机构的签名校验,没有合法签名的应用,根本无法通过iOS系统的启动检测,要么安装失败,要么安装后打不开。不同签名类型的设备授权逻辑完全不同,比如大家熟悉的Ad Hoc个人签名,要求必须提前把每一台要安装应用的设备UDID录入到开发者账号的设备列表里,签名的时候会把授权设备信息打包进IPA,只有录入的设备才能正常安装使用,最多只能授权100台设备,适合小范围内测;而我们常说的企业签名,走的是苹果给企业开发者开放的内部应用分发权限,不需要提前录入任何设备的UDID,理论上支持无限台设备安装,这也是企业签名为什么深受内部应用、小范围内测欢迎的核心原因。很多人不知道的是,就算是上了AppStore的应用,其实也经过了两次签名,开发者先自己签名上传,苹果审核通过后会再用苹果官方的证书重新签名,才能让所有用户安装,整个逻辑都是围绕签名校验做的信任体系。
接下来聊证书分发原理,其实整个签名的核心就是证书,苹果的证书体系基于非对称加密,开发者本地生成CSR证书请求文件,上传给苹果,苹果用自己的根私钥给开发者的公钥签名,生成我们能用的分发证书,拿到这个证书,开发者才能给IPA签名,让iOS系统信任。不同用途的分发证书权限不一样,用来上传AppStore的分发证书,打包后IPA最终还是要交给苹果重新签名,而我们做IPA签名用的企业分发证书,本身就自带分发权限,签名后就能直接分发安装。现在很多人做H5封装应用,本质就是把需要的网页打包成一个原生IPA壳,生成未签名的IPA包之后,再用我们手里的证书做IPA签名,就能生成可以直接安装的包,不需要走AppStore审核流程,对于门店引流、内部工具这类不需要公域下载的应用来说,这种方式太灵活了。
很多人问我为什么现在掉签这么频繁,核心就是Apple ID风控,这点我真的有切肤之痛,早年苹果风控松的时候,我一个IP登五六个企业开发者账号都没事,现在苹果的风控体系已经非常完善了,风控维度覆盖了你能想到的所有点:比如IP环境,如果你频繁切换IP登录同一个开发者账号,或者同一个IP一天注册三五个新的Apple ID开发者账号,直接触发风控标记,轻则证书被撤回,重则整个账号直接封禁;比如设备关联,如果你同一台电脑登录了十几个被风控过的开发者账号,所有关联的账号都会被苹果标记,批量封号都是常有的事;最常见的就是安装量触发风控,一个企业证书如果短时间内安装量超过万级,苹果的系统检测直接就会判定这个证书被滥用,直接吊销证书,所有签过的App全部掉签。我早年自己花299美元买了苹果企业开发者账号,那时候不懂,帮朋友签了一个他做的刷单类App,结果不到半个月,整个账号直接被封,两千多块钱打了水漂,从那以后我就知道,风控真的不是闹着玩的。
说到这里就不得不聊大家最关心的独享证书和共享证书的区别,这也是决定签名稳不稳定的核心因素。我刚做签名的时候图便宜,找了一个网上八十块钱包月的共享签名,一开始用着没什么问题,结果不到一周就掉签了,找商家给我重签,三天之后又掉了,折腾了半个月,我才弄明白共享证书的套路:所谓共享证书,就是一个企业证书给几十上百个客户的IPA一起签名,很多小商家为了压缩成本,一个证书塞几百个App,这里面难免有违规App,比如赌博、诈骗、刷量这类违规应用,只要其中一个App被用户举报或者被苹果检测到,整个证书就会被苹果吊销,所有签在这个证书上的App全部掉签,所有客户都要遭殃。而独享证书就不一样了,顾名思义,整个证书只给你一个人的App用,整个证书下只有你自己的应用,只要你的App本身不违规,不短时间内堆出离谱的安装量,根本不会触发风控,掉签概率低到可以忽略不计。
关于价格我也聊聊不同渠道的感受,这么多年我找过不下二十个不同渠道的签名服务商,价格差得真的离谱:共享签名一般几十块到一百多块一个月,有些按安装量收费的,几块钱一个安装,看起来很便宜,但是掉签的频率真的能把人折腾疯;独享签名的价格差也很大,我最早找线下工作室问,开口要三千一个月,后来找线上正规的平台,普通的独享企业签名一个月大概五百到八百,一年下来也就几千块,还有一些商家卖的伪独享,就是一个证书分给两三个客户用,价格比真独享便宜一半,但是只要其中一个出问题,你还是跟着掉,本质还是变相聚共享。我去年做了一次长达三个多月的稳定性实测,同一个H5封装的企业内部客户管理IPA,分别在四个不同渠道做了签名,记录掉签情况:第一个是99块钱包年的共享签名,第一周周末就掉了一次,之后平均不到一周掉一次,最夸张的时候一天掉两次,每次掉签都要让所有员工重新下载安装,半个月下来,公司行政都找我投诉了好几次;第二个是我找正规平台做的真独享签名,一个月六百,整整三个月,一百二十台设备安装使用,一次都没掉过,稳定性真的没的说;第三个是TF签名,也就是TestFlight苹果官方内测签名,很多人说TF是最稳定的,我实测下来,三个月确实没掉,但是TF的问题也很明显,首先每个TF链接最多只能放一万个测试名额,超过就得重新发版审核,而且TF本身有审核门槛,我的内部工具虽然没问题,但是审核花了两天才过,每次更版本都要重新等审核,不如企业签名灵活,而且下载需要用户先装TestFlight,很多普通用户根本不会操作,步骤太繁琐;第四个就是上AppStore,这个不用说,正规应用肯定优先上AppStore,但是我的这个是企业内部专用的工具,没有对外发布的需求,上AppStore不仅要交年费,审核还不一定能过,就算过了,用户也需要从AppStore搜,对于内部使用来说完全没必要,所以最后还是选了独享企业签名。
这中间我还遇到过不少问题,比如刚做H5封装签名的时候,很多用户安装完打开,提示“未受信任的企业开发者”,那时候很多员工不知道要去设置里信任证书,一堆人找我解决问题,后来我专门把操作步骤做成了带截图的教程放在安装页,才解决了这个问题;还有一次我图便宜找了一个个人商家做共享签名,结果不到一个月商家跑路,证书掉了之后没人给重签,用户手机里的App直接闪退打不开,好多员工的客户数据都存在本地,差点误了大事,从那以后我就认准了正规平台的真独享,宁愿多花点钱,也要要好用稳定,毕竟折腾掉签的时间成本,比签名费贵多了。
最后再聊聊苹果企业签名内部使用规范里的几个重要提醒,第一绝对不要用自己的企业证书给违规App签名,一旦触发风控,整个账号都会被封,得不偿失;第二内部使用的证书尽量用独享,不要和别人共用,避免被别人牵连掉签;第三控制单证书的安装量,一般来说一个独享证书几千台设备完全没问题,不要强行堆几万的安装量,触发风控反而不值;第四内部应用尽量不要流出到公网,避免被无关人员举报,引来苹果的检测。
这么多年玩下来我最大的感受就是,iOS签名真的是一分钱一分货,不要总想着找最便宜的,折腾掉签的成本远不如多花点钱买稳定,对于企业内部使用来说,好用稳定才是核心需求,只要选对了证书和渠道,完全可以做到一年半载不掉签,省心又省力,比起天天追着商家重签,把精力花在自己的业务上才是更重要的事。