我接触苹果签名行业快六年了,最早就是因为公司要做内部办公APP,需要给全体员工分发安装,才一头扎进了这个领域,从最开始找个人签踩坑,到现在用正规大服务商的稳定签名,大大小小的问题见了不少,也总结出了很多实用的经验,今天就从一个资深使用者的角度,给大家拆解一下苹果签名的核心内容,给有同样内部员工安装需求的朋友做个参考。
首先说最基础的签名技术原理,很多刚接触的朋友都搞不懂为什么一定要签名,其实本质上是iOS的闭源生态规则决定的:iOS系统对所有安装运行的APP都做了签名验证机制,苹果用非对称加密技术,给合法的开发者颁发带私钥的证书,开发者打包APP之后,用证书私钥给IPA文件添加信任签名,用户手机安装APP后,系统会自动调用苹果公开的公钥验签,验证通过才能正常启动,没有签名或者验证不通过的APP,要么根本装不上,要么打开就会提示“不受信任的开发者”直接闪退。我们常说的IPA签名,本质就是给没有经过苹果官方上架签名的IPA包,拿到合法的证书重新添加信任签名,让APP能正常安装运行,而我们公司最早的需求,就是把内部OA的H5页面封装成IPA包,也就是大家常说的H5封装,因为不对外发布,没必要走官方上架流程,所以就需要做签名分发,这也是很多企业内部应用的共同需求。官方上架虽然是最稳定的方式,但内部应用不对外公开,上架不仅需要交每年六百多的开发者年费,还要过苹果严格的审核,很多内部APP有专属的权限配置,涉及企业内部数据,根本过不了审,就算过审,也容易被外部用户搜索到,泄露内部业务信息,所以绝大多数企业做内部员工安装,都会选择各种签名方式,而不是官方上架。
接下来聊一下很多服务商都在说的证书池机制,这个我是踩过大坑才明白它的重要性。最早我找了一个个人小服务商做企业签名,对方只有一两本企业开发者证书,所有客户的应用都挤在这几本证书上,不到三个月证书就因为签名应用过多、被偶然举报触发了苹果的风控,直接被吊销,全公司一百多个员工的OA全部打不开,那天正好赶季度项目上线,所有人都没法办公,急得我团团转,找服务商补签,对方说要重新找二手证书,整整等了一天多才恢复,耽误了大几万的项目进度,那个教训我到现在都记得。后来换了正规大服务商才知道,什么是真正的证书池机制:正规服务商手里会储备几十上百本不同主体的正规企业开发者证书,做成一个动态调度的资源池,不会把所有鸡蛋放在一个篮子里,签名的时候会根据每本证书已承载的应用数量、近期风控评分来动态分配,一本证书签够一定数量的应用就不会再新增应用,新应用直接分配低风险的新证书,同时还会做风险隔离,就算某一本证书掉了,也只会影响极少数客户的应用,不会波及所有用户,这也是大服务商签名更稳定的核心原因。我们现在用的签名服务,服务商的证书池有近百本正规企业证书,分散存储管理,用了两年多只遇到过一次单证书掉签的问题,服务商五分钟就给我们转到了备用证书,半小时就恢复可用了,补签也没有额外收费,体验好了不止一点。
然后说UDID绑定,这个是很多人分不清不同签名类型的关键点。苹果设备的UDID就是每台手机唯一的设备识别码,超级签名本质是用个人开发者账号签名,苹果规定每个个人开发者账号最多只能绑定100台设备的UDID,所以超级签名每安装一台设备,都必须先获取设备的UDID,绑定到对应个人开发者账号之后才能签名安装,这就是UDID绑定的核心作用。而传统的苹果企业签名,因为企业开发者账号本身就被苹果授予了不限设备安装的权限,所以默认不需要绑定UDID,任何设备都能直接下载安装,这也是企业签名适合大团队内部员工安装的核心优势:我们公司现在三百多员工,每个人换手机、新员工入职,直接发个下载二维码就能安装,不需要员工自己折腾找UDID,也不需要IT一个个录信息,省了太多不必要的工作量。不过现在很多正规服务商为了降低证书风险,也会给企业签名做UDID绑定,就是只允许提前录入的公司员工设备UDID安装,避免证书被滥用、被外人盗用分发,反而大大降低了掉签风险,我们现在用的就是这种绑定UDID的专属企业签名,稳定性比无限制下载的企业签名高太多了。
再聊一下完整的重签流程,我因为经常要更新APP版本,对接了这么多次,对整个流程非常熟悉,常规的IPA重签流程一共分五步:第一步,拿到开发者打包好的原始IPA包,不管是原生开发还是H5封装的都可以操作,先移除原始包的旧签名信息,做脱壳处理;第二步,根据用户选择的签名类型,调配对应的证书和描述文件,企业签名调配对应风险等级的企业证书,超级签名调配已经绑定好对应UDID的个人证书;第三步,把新的证书和描述文件注入IPA包,用对应证书的私钥完成新的签名加密计算;第四步,重新打包生成签好名的IPA文件,上传到服务商的分发服务器;第五步,生成下载二维码或者网页下载链接,用户就能直接下载安装了。整个流程在正规服务商那里,一般十多分钟就能完成,我们每次更新OA版本,上午把IPA包发过去,下午就能给员工推送更新,很少出问题,当然也遇到过小状况:有一次我们开发打包的时候,漏配置了iOS要求的相册、相机隐私权限说明,签完名之后部分iOS13以上系统的手机装了打不开,服务商的技术帮我们排查了半个多小时就找到了问题,我们重新打包之后,十分钟就完成了重签,整体效率还是很高的。
接下来聊大家最关心的,超级签名和企业签名的真实稳定性对比,还有不同渠道的价格差异。从我实际使用体验来看,不同类型不同渠道的签名,价格和稳定性差异非常大:先说企业签名这边,最便宜的是共享证书企业签名,就是几十上百个不同客户的应用都签在同一本证书上,这种一般小渠道卖两三百块钱一个月,看起来很便宜,但是稳定性极差,平均一个月掉三四次都是常事,很多贪便宜的朋友都踩过这个坑;然后是独立证书企业签名,就是一本证书只放你自己的应用,不会给其他客户共用,这种价格一般季度签1500到2000元,年签4000到5000元,稳定性比共享签名好很多,适合应用数量少、更新不频繁的团队;最好的就是依托大证书池、提前做了UDID绑定的专属企业签名,年签一般6000到8000元,这种是目前稳定性最高的企业签名类型,也是我们一直在用的。然后是超级签名,超级签名一般按安装次数收费,每个UDID3到8块钱不等,三百台设备就是一千多到两千多,掉签之后重新安装还要重新收费,长期用下来每年的成本比稳定企业签名高很多,而且苹果最近几年对个人开发者账号风控越来越严,很多超级签名服务商的批量账号都被封,经常出现整批掉签的问题,稳定性其实远不如优质企业签名。还有TF签名,也就是TestFlight签名,这个本质是苹果官方的测试分发渠道,稳定性确实很高,基本不会掉签,价格一般签一次1000到2000元,能用三个月,但是TF最多只能容纳1000个测试设备,而且每次更新版本都要重新过苹果审核,快的话一两天,慢的话四五天,对于经常更新版本的内部应用来说太耽误时间,我们之前也用过半年TF,后来因为每次更新都要等审核,太影响内部使用,还是换回了企业签名。
从我这么多年的使用体验来看,八成以上的时间,选对渠道的苹果企业签名都是非常稳定好用的,完全能满足内部员工安装的需求,我们用现在这个服务两年多,只掉过两次签,第一次是苹果更新开发者规则,服务商的批量证书需要更新配置,三个小时就补签完成了,也没有额外收费;第二次是我们自己不小心把带测试敏感内容的包传了上去,触发了苹果风控,服务商帮我们换了证书重新签,当天就恢复了使用。偶尔遇到老版本iOS系统兼容问题,技术也能很快响应解决,平时新员工安装、版本更新都很顺畅,比之前踩坑的时候体验好太多了。当然不可否认,行业里确实有很多不靠谱的服务商,做出来的签名动不动就掉签,补签还不及时,收费还乱加价,只要我们不贪便宜,选择有正规证书池、做了风险管控的服务商,就能获得非常稳定的使用体验,完全能支撑企业内部的日常办公需求。