我接触苹果签名行业快八年了,从最早帮朋友做内部应用签名开始,到现在帮上百个客户做稳定的签名分发,见过太多新手踩坑,也摸透了各种签名模式的本质,最近很多朋友找我问苹果签名证书年费相关的问题,好奇为什么不同渠道价格差那么多,稳定度天差地别,今天就以我多年的实际使用经验,给大家做一次深度梳理。
首先说最基础的签名技术原理,很多刚接触iOS分发的朋友搞不懂为什么需要签名,本质上这是iOS系统的安全机制决定的:iOS不允许任何没有经过苹果信任授权的应用安装运行,所有能在iOS设备上打开的应用,都必须持有苹果官方颁发的签名凭证,我们常说的IPA签名,就是给未经过官方签名的IPA安装包,添加符合苹果校验规则的信任凭证,让系统可以通过校验,正常安装运行。很多做H5项目的朋友应该都了解,纯H5页面没法直接放到iOS桌面运行,大部分都会选择做H5封装,把H5项目打包成IPA安装包,打包之后的IPA本身没有合法签名,必须通过第三方签名才能分发下载,这就是IPA签名最常见的应用场景。如果你的应用符合苹果审核规则,最好的方式自然是官方上架App Store,上架后的应用由苹果官方直接签名,永远不会掉签,用户直接从App Store下载就能用,稳定度是最高的,但可惜的是,很多应用比如企业内部办公应用、小众工具类应用、特定场景的H5封装应用,不符合苹果的上架规则,根本没法通过官方上架审核,所以才需要用到第三方苹果签名服务。
接下来讲业内经常提到的证书池机制,这也是稳定签名的核心保障之一。我刚做签名的时候,还没有证书池的概念,就是拿一两张证书给所有客户签名,一旦证书被苹果吊销或者封禁,所有客户的应用都会集体掉签,补签要花好几个小时,客户体验特别差。后来行业慢慢发展出了证书池机制,简单来说就是提前申请一大批不同开发者主体的苹果证书,把这些证书整合到同一个签名调度系统里,日常运行的时候分散给不同客户使用,一旦某一张证书出问题被封,系统会自动调度证书池里其他可用的证书给用户做补签,不会出现大面积集体掉签的问题。那证书池的成本主要来自哪里?其实就是苹果签名证书年费,苹果不管是个人开发者证书还是企业开发者证书,都是按年收费的,个人证书每年99美元,企业证书每年299美元,证书池里放的证书越多,每年要交的年费就越高。我自己目前在用的证书池,一共有72张个人证书和16张企业证书,每年光给苹果交的证书年费就快十万块,加上服务器和系统维护成本,一年的固定成本要十二万左右。当然也有小的证书池,只有十几张证书,年费只要几千块,成本低价格自然低,但稳定度肯定不如大证书池。我之前也贪便宜试过用共享的证书池,不用自己交年费,只用分成就行,结果不到三个月就有一半证书被封,十几个客户集体掉签,我花了整整一周才给所有客户补签完成,还赔了不少违约金,从那之后我就坚持自己申请证书,自己交年费,稳得多。
再说说大家经常听到的UDID绑定,很多人搞不清这个到底是什么,UDID其实就是每台iOS设备的唯一识别码,苹果的个人开发者证书规则里明确说了,一张个人证书最多只能绑定100台不同的设备,只有绑定了UDID的设备,才能安装这张证书签名的应用,所以不管是超级签名还是TF签名,本质上都离不开UDID绑定。超级签名的核心原理,就是用个人开发者证书的设备绑定权限,提前把用户设备的UDID添加到证书里,再生成对应的描述文件给IPA签名,用户安装之后就能通过苹果的校验。我之前帮一个客户做内部巡检的H5封装IPA,一共1200个员工用,我就用了12张个人证书,每张证书绑定100个UDID,刚好分配完,用了三年多,只有一次因为我这边导入UDID的时候操作失误,把三十多个用户的UDID输错了,导致这部分用户掉签,后来重新绑定补签之后就再也没出过问题。UDID绑定的好处就是风险分散,一张证书最多影响100个用户,就算证书被封,也不会影响其他用户的使用,这也是超级签名稳定度高的核心原因之一。
讲完基础概念,再说说完整的重签流程,我这么多年一直用标准化的重签流程,哪怕是补签也不会出错:第一步是拿到用户提供的原始IPA包,如果是H5封装的需求,我会先按照用户要求把H5项目封装成未签名的IPA安装包,做好基础配置;第二步是根据用户选择的签名类型,匹配证书池里对应的可用证书,如果是超级签名就提取用户设备的UDID,生成绑定了该UDID的描述文件,如果是企业签名就生成对应企业证书的描述文件;第三步就是用专业签名工具对IPA做脱壳重签,替换掉原包的签名信息,注入新的证书和描述文件;第四步就是校验签名有效性,生成对应的分发链接,用户点击链接就能直接安装。现在我的签名系统已经做了自动化,掉签之后用户只需要扫码就能触发自动重签,重新安装就能用,不用我手动操作,非常方便。当然也出过小问题,上个月服务器运营商线路波动,导致自动重签延迟了三个小时,有几个做线下招商的客户着急用,我只好手动给他们做了重签,很快就解决了,属于小概率的意外情况。
接下来聊聊大家最关心的,超级签名与企业签名的真实稳定性对比,还有不同渠道的价格。首先说超级签名,现在市面上超级签名主要有两种收费模式,一种是按下载量收费,正规自己握证书的渠道,价格大概是1-3元每个UDID下载,我这边因为自己交年费做证书池,所以定价是2元每个下载,价格不算低但稳定有保障;另一种是包月不限下载,价格一般几百块一个月,这种基本都是用的共享证书,很多人共用一张证书的设备额度,稳定度很差,掉签率很高。超级签名的真实稳定度,我这么多年统计下来,只要是正规自己做证书年费的超级签名,年掉签率不到5%,也就是一百个安装里一年只有不到5次掉签,而且掉签也只会影响单个证书对应的100个用户,不会波及全部,稳定度非常不错,适合用户量在一万人以内的应用。
然后是企业签名,企业签名也分两种,共享企业签名和独立企业签名,共享企业签名就是很多客户共用一张企业证书,价格非常便宜,一般一个月100-300块,但是稳定度极差,因为只要有一个客户的应用违规被苹果查到,整个证书都会被封,所有客户都会掉签,我之前接过一个转过来的客户,之前用的共享签名,最多一个月掉了8次,补签补到他崩溃,后来转我这边的独立签名就好了。独立企业签名就是一个客户独占一张企业证书,不会被其他客户连累,价格大概是一个月1000-3000块,如果包年交苹果签名证书年费,价格会优惠不少,我这边独立企业签名包年是12000,比按月付便宜2400,很多长期用的客户都会选择包年。独立企业签名的真实稳定度,我这边统计下来,年掉签率大概在10%左右,只要应用不违规,一年掉签不会超过一两次,补签也很快,适合用户量比较大的应用,我有几个做本地生活平台的客户,用独立企业签名已经稳定跑了两年多,只掉过一次,还是因为我忘了提前续证书年费,到期之后证书被苹果取消,后来提前续费补签之后就再也没出过问题。
最后还要提一下TF签名,也就是苹果官方TestFlight测试签名,TF签名其实是介于第三方签名和官方上架之间的选择,本质是苹果给开发者开放的测试应用分发渠道,属于苹果官方认可的签名,稳定度是所有第三方签名里最高的,基本不会掉签,有效期90天,到期之后重新上传就能继续用,价格一般是几百块钱一次,最多可以绑定一万个测试用户,适合用户量不大、追求极致稳定的客户,我很多做内部办公应用的客户都选择TF签名,用了四五年都没掉过签,体验非常好。
这么多年用下来我最大的感受就是,苹果签名本身的技术已经很成熟了,八成以上的场景都能做到稳定好用,掉签补签大多是小概率问题,很多时候都是因为服务商贪便宜,不交足够的苹果签名证书年费,用共享证书坑用户导致的,只要找正规的服务商,选对适合自己用户量的签名方式,完全可以长期稳定使用,不用太担心掉签的问题。如果是自己做签名分发的朋友,我也提醒一句,一定要提前预留好证书年费的预算,不要省这点钱导致后期出大问题,毕竟苹果的规则摆在这,没有按时交年费,证书说失效就失效,到时候影响的不仅是自己,还有千千万万的用户,就得不偿失了。