我接触苹果签名快十年了,最早做个人iOS开发的时候,因为很多测试应用和不符合上架规范的内部工具没法进App Store,就自己捣鼓签名证书制作,从手动生成CSR文件申请证书,到后来接触各类签名服务商,踩过坑也用到过很多稳定靠谱的服务,今天就以我多年的使用经验,给大家讲讲苹果签名的核心逻辑和真实体验。

首先说最基础的签名技术原理,很多刚接触的朋友不懂为什么苹果非要签名,其实这是苹果封闭生态的安全机制,所有能安装到iOS设备上的应用,都必须获得苹果官方的授权信任,本质就是用苹果认可的签名证书对IPA安装包做加密签名。具体的流程是,我们制作签名证书的时候,会先生成一对公钥和私钥,公钥上传给苹果服务器留存,私钥自己保留,给IPA签名的时候,用私钥对IPA包内的所有二进制文件、资源文件分别做哈希运算生成签名信息,iOS设备安装应用的时候,会调用苹果服务器的公钥验证签名,如果验证通过,说明应用没有被篡改、身份合法,就能正常打开使用,如果证书被苹果吊销,验证就会不通过,应用就会打不开,也就是大家常说的掉签。我们常说的IPA签名,本质就是这个给打包好的IPA包做合法签名的过程,哪怕是H5封装生成的IPA包,也必须经过这一步才能安装,这是iOS系统绕不开的规则。

接下来讲业内稳定服务商都在用的证书池机制,我最早自己做签名的时候,只有一两个个人证书,只要其中一个被苹果吊销,我所有的应用都用不了,后来找正规合作才知道,做的好的签名服务核心就是成熟的证书池机制。所谓证书池,就是服务商提前储备几十上百张不同类型的正规苹果开发者证书,不会把上百个应用都塞到同一张证书里,而是分散部署,每张证书只放数量有限的合规应用,一方面降低单张证书因为应用过多被苹果检测到的风险,另一方面哪怕某一张证书出问题被吊销,也只会影响这张证书上的小部分应用,不会波及所有客户,而且成熟的证书池会定期淘汰有风险的老证书,补充新申请的正规证书,从根源上提升整体稳定性。我现在合作了五年的服务商,光是企业证书就储备了两百多张,个人开发者账号做超级签的有上千个,每张企业证书最多只放20个合规应用,违规应用一概不接,这么多年用下来,大部分时间都稳定,很少出现大面积掉签的情况。

然后说UDID绑定,这个是很多签名类型绕不开的核心环节,UDID就是每一台苹果设备独有的识别码,苹果给开发者的Ad Hoc签名权限里,明确要求只有绑定了UDID的设备才能安装对应签名的应用,个人开发者账号最多可以绑定100台设备,企业开发账号最多可以绑定1000台。最早我自己做测试签名的时候,需要用户手动抄UDID发给我,我再手动加到苹果开发者后台,操作非常麻烦,还经常出错,现在正规服务商都做了自动获取UDID的功能,用户只需要点一下下载页的按钮,就能自动获取设备UDID,不需要任何手动操作,非常方便。不管是超级签名还是TF签名,本质上都用到了UDID绑定的机制,这是苹果规则决定的,没法跳过。

接下来我给大家理一理完整的重签流程,我自己重签过几百个IPA包,也帮朋友处理过各种问题,标准流程其实很清晰:第一步是拿到原始IPA包,如果是H5封装的应用,就是先把H5站点封装成符合要求的IPA安装包,很多做本地服务、内部工具的商家,不愿意花大价钱做原生开发,H5封装加签名的模式成本很低,完全能满足需求;第二步是根据应用的使用场景、用户规模选择对应的签名类型,匹配证书池里合适的证书;第三步是如果需要绑定UDID,就把获取到的UDID添加到对应证书的描述文件里,生成新的描述文件;第四步就是用签名工具,结合证书的私钥和新的描述文件,去掉IPA原来的签名信息,替换成新的合法签名;第五步就是签名完成后重新打包,上传到下载服务器,用户就能直接下载安装了,整个流程正规服务商自动化处理的话,一两分钟就能完成,非常高效。

聊完基础逻辑,我们来说大家最关心的稳定性和价格,这里我会把官方上架、TF签名、超级签名、企业签名都说到,也给大家讲讲超级签名和企业签名的真实稳定性对比。首先说官方上架,就是把应用提交到App Store审核,通过后用户就能直接下载,这是最稳定的,只要应用不违规被下架,永远不会掉签,但是官方上架的审核规则非常严格,很多内部工具、测试应用、不符合规范的内容类应用根本没法通过审核。价格方面,个人自己申请苹果开发者账号,一年大概688元,提交本身不花钱,找代上架的话,普通合规应用代上架价格大概在800到2000元,一般是过了才收钱,特殊品类包过的价格从几千到几万不等,看应用的类型。

然后说TF签名,TF就是TestFlight,苹果官方的应用测试分发平台,是苹果官方认可的分发方式,稳定性仅次于官方上架,掉签概率非常低,我用TF挂的一个内部工具快两年了,只遇到过一次因为测试名额满了无法下载,服务商给我增加了名额就正常用了,没有掉签打不开的情况。价格方面,TF签名一般按年或者按下载量收费,普通应用一年大概1000到3000元,按下载量算的话大概0.5到2元一个下载,性价比很高。

接下来重点说大家问的最多的超级签名和企业签名的真实稳定性对比,先说价格,再讲稳定性。企业签名用的是苹果299美元一年的企业开发者账号,不需要绑定UDID,任何设备都能直接安装,所以很受大流量应用欢迎,企业签名分共享证书和独立证书两种,共享证书就是很多不同客户的应用共用一张证书,价格非常便宜,一个月大概50到200元,一年也就300到1000元,但是稳定性极差,因为一张证书塞了几百上千个应用,很容易被苹果检测到吊销,我最早图便宜用过共享证书,半个月掉了三次,每次补签都要等大半天,有时候证书直接废了还补不上,非常坑。独立企业证书就是一个或者少数几个合规客户共用一张证书,不会随便加新应用,价格大概一个月300到1000元,一年大概2000到8000元,这种稳定性就好很多,我现在有一个客户的内部应用用的就是独立企业签,快一年了只掉过一次,还是因为应用被恶意举报,服务商当天就给换到另一张证书,也没额外收钱,很快就恢复正常了。

然后说超级签名,超级签名用的是多个个人开发者账号的Ad Hoc权限,靠UDID绑定安装,每个个人账号最多绑定100台设备,所以不适合百万级的大流量应用,但是中小流量应用用起来非常合适。价格方面,超级签名一般按设备数量收费,正规渠道的价格大概一个设备1到3元,一万台设备以上批量拿大概1元左右一个,量少的话2到3元一个,掉签补签不会重复扣设备数量,非常良心。稳定性方面,我用了这么多年的真实感受是,正规证书池做的超级签名,稳定性比共享企业签好太多,甚至比小服务商的独立企业签还要稳,因为超级签名的风险非常分散,一个账号出问题最多影响100个用户,不会出现全量掉签的情况,只要应用合规,很少会掉签。我之前做的一个小社群应用,五千个用户用超级签名,跑了半年多,只有两个用户因为换设备掉签,补签十分钟就弄好了,体验非常好。

当然我也踩过坑,之前找过一个小渠道,超级签名报价一个设备只要五毛钱,比市场价低一半,结果用了半个月全掉了,后来才知道他们用的是盗用别人的开发者账号做签名,账号被原主人封号了,找服务商也联系不上,损失了几千块的用户成本,所以说便宜没好货,正规的签名证书制作都是用自己花钱买的正规开发者账号,成本摆在那里,太低的价格肯定有坑。

这么多年用下来,我最大的感受就是,苹果签名80%的情况下都是好用稳定的,只要你选对正规服务商,选对适合自己的签名类型,完全能满足未上架应用的分发需求,掉签确实会遇到,毕竟规则是苹果定的,苹果随时可能吊销证书,没有谁敢说百分百不掉签,但是靠谱的服务商掉签了都会免费补签,很快就能解决,不会影响太久。我遇到过的证书问题,大多都是贪便宜选了小作坊的共享证书,或者应用本身违规被举报,正规服务商做的合规应用,很少出问题,哪怕苹果更新iOS系统,新系统刚出来的时候偶尔会有验证问题,服务商一两天就能调整好,几乎不影响使用。

总的来说,对于没法官方上架的应用来说,苹果签名是目前最成熟的分发方案,不管是原生IPA还是H5封装的IPA,都能做签名,TF签名、独立企业签名、超级签名都有适合自己的场景,只要不贪便宜找小作坊,大部分时候都能稳定使用,掉签补签也很方便,完全能满足日常的使用需求。