接触苹果签名快七年了,从最早做iOS外包帮客户做内测分发开始,我天天跟各类证书、IPA包打交道,P12证书的导出导入更是我每天都要碰的基础操作,踩过坑也摸出了很多实打实的经验,今天就从原理到实际体验,给大家讲讲我这么多年的深度使用感受。

首先说最核心的签名技术原理,其实苹果的机制很明确:所有能在iOS设备上安装运行的APP,都必须经过苹果官方授权的合法签名,没有签名的IPA包,iOS系统根本不会允许安装,即使你通过爱思等工具侧载,也会提示“未受信任的开发者”无法打开。本质上来说,签名就是用苹果开发者后台签发的证书,对IPA包的应用信息进行加密哈希,安装的时候iOS系统会联网校验这个签名对应的证书是否在苹果的信任列表里,只有验证通过才能正常运行。而我们常说的P12证书,就是把我们从苹果开发者后台申请到的开发或者发布证书,连同对应的私钥一起导出打包而成的文件,不管做哪种类型的签名,P12证书的导出导入都是第一步也是最关键的一步。我刚接触签名的时候就踩过坑,导出的时候只选了证书文件没选中关联的私钥,导入签名工具折腾了一下午都用不了,最后才搞清楚问题出在哪,所以直到现在我帮新手做签名,第一件事就是强调导出P12一定要同时选中证书和私钥,设置好密码再导出,导入的时候也要对应密码才能正常使用。

接下来讲现在主流签名服务商都在用的证书池机制,其实很容易理解:服务商把上百张不同的P12证书整合到一个资源池里,用户需要签名的时候,系统自动从池子里挑选状态正常、符合需求的证书完成签名,而且会动态控制单张证书的签名数量,避免单张证书签名太多触发苹果的检测机制。证书池的好处非常明显,就算某一张证书因为种种原因被苹果封了,也只会影响这张证书签过的少量应用,池子里其他证书正常可用,不会出现全掉光的情况,而且服务商还会定期往池子里补充新申请的证书,保证整体的可用性。我早年用小服务商的签名,他们就一两张证书全平台共享,动不动就全掉,现在用正规大服务商的证书池签名,这种情况基本很少见了。

然后说说UDID绑定,这个是超级签名、个人开发证书签名的核心规则,苹果的99美元一年的个人/公司开发者账号,每张开发证书最多只能绑定100台测试设备,每台iOS设备都有一个唯一的识别码就是UDID,想要给某台设备上的应用签名,必须先把这台设备的UDID添加到开发者后台的设备列表里,再生成对应的描述文件,才能用P12证书完成签名。现在做H5封装成IPA之后做超级签名,一般都会做自动获取UDID的链接,用户点一下就能自动获取UDID上传绑定,全程系统自动处理,早年我都是手动一个个复制添加,几十台设备就要弄大半天,现在自动化流程真的方便太多。当然也遇到过问题,之前有个客户自己导出UDID输错了几位,导致安装失败,后来重新获取绑定,五分钟就解决了,都是小问题。

再说说完整的重签流程,不管是原生IPA还是H5封装出来的未签名IPA,重签的流程都是标准化的:第一步拿到原始IPA包,解压提取出应用的基础信息,移除原来的旧签名信息;第二步根据你选择的签名类型,匹配对应的描述文件和P12证书,如果是自己提供证书,就要把正确导出的P12证书导入签名系统,输入密码验证可用;第三步替换应用里的签名配置文件,重新加密签名,打包生成新的可安装IPA,最后生成下载链接,整个过程自动化工具只要三五分钟就能完成,手动操作也不会超过半小时。我自己做H5封装,一般都是先产出无签名的IPA壳,再根据客户的需求选择对应签名方式重签,大部分时候都很顺,只遇到过一次P12导入报错,查了半天发现是导出的时候密码用了特殊字符,签名工具不识别,重新导出换了普通密码,导入就正常了。

现在市面上主流的签名方式有很多,除了我们说的IPA签名这个基础,很多人会做H5封装,就是把移动端H5网页打包成IPA格式的应用,体验接近原生,不用用户访问网页,封装完必须做IPA签名才能安装,是很多中小团队低成本做应用的首选;如果能符合苹果审核规则,最好的方式当然是官方上架,上架App Store之后用户直接下载,最稳定也最受信任,但很多内测应用、企业内部办公应用、定制化工具不符合上架要求,所以才会用到第三方签名,现在主流的第三方签名就是超级签名、企业签名、TF签名这三种,接下来我说说我这么多年用下来,超级签名和企业签名的真实稳定性对比,还有不同渠道的价格情况。

先说说价格,现在整个市场的价格其实很透明:共享证书的企业签名,一般一个月30到150元不等,适合个人短期测试用;独立证书的企业签名,小流量的一般一个月300到500元,不限制下载的大流量独立签名一般一个月600到1000元,包年的话大概3000到8000元,会便宜不少;超级签名是按激活设备收费,一般正规渠道是1到3元一个设备,不激活不扣钱,大多是2元左右一个设备,绑定设备之后终身可用,掉签也不用额外花钱;TF签名也就是TestFlight签名,是苹果官方的内测渠道,一般按整包收费,一个周期200到600元,掉了免费补,最多支持一万台测试设备;官方上架的话,一般服务费从1000到5000元不等,看APP的复杂程度,大多是过审收费。

接下来说稳定性,我这么多年体验下来,八成以上的正规签名都是非常稳定好用的,掉签其实是小概率事件,只有选错渠道才会频繁出问题。我先说说超级签名,超级签名走的是UDID绑定,单张证书最多100台设备,正规服务商的超级签名用证书池分发,不会让单张证书过载,所以触发苹果检测的概率很低,我去年给一个本地创业项目做内测,一百二十多台设备用超级签名,整整半年只掉过一次,还是其中一张证书被苹果例行复检下架,服务商自动给补签了,用户重新下载安装就能用,没有额外收费,体验非常好。然后是企业签名,企业签名用的是299美元一年的企业开发者证书,不需要UDID绑定,不限制设备数量,适合用户量多的场景,我现在长期合作的正规服务商的独立企业签名,我给一个本地教育机构做的两千人用的内部办公APP,已经稳定跑了一年半,从来没掉过签,只有一次苹果更新iOS16之后,个别旧版本设备打不开,重新重签一次就好了,补签也没花钱。

当然我也遇到过掉签、证书问题,早年贪便宜找过个人渠道的共享企业签名,三十块钱一个月,结果不到半个月就掉了,对方也联系不上,后来换正规渠道才解决;还有一次我自己把P12证书随便分享给了一个朋友,结果他拿去滥签,导致证书被苹果封了,我手里好几个客户的签名都掉了,最后重新申请证书导出P12重签才搞定,所以这里也提醒大家,P12证书一定要保管好,不要随便分享给别人,导出一定要设置强密码,避免被盗用。

对比下来,超级签名的稳定性其实比共享企业签名好很多,和独立企业签名相差不大,优势是灵活,按设备收费,小批量内测成本很低,掉签概率也低;企业签名适合用户量多的场景,一千台以上用户的话,企业签名的成本比超级签名低很多,正规独立证书的稳定性也完全够用;TF签名是最稳定的,因为是苹果官方认可的内测渠道,只要APP不违规,基本不会掉签,缺点是有一万台设备的上限,还要过苹果的内部审核,部分违规APP过不了。

这么多年用下来,我最大的感受就是,现在苹果签名行业已经很成熟了,只要选对正规渠道,八成以上的签名都能稳定运行几个月甚至几年,完全能满足内测、企业内部应用、未上架合规应用的分发需求,不管是IPA签名还是H5封装后的签名,流程都已经自动化,非常方便,能上架官方的肯定优先官方上架,不能上架的,根据自己的用户量选对应签名就可以,遇到掉签也不用慌,正规服务商都会免费补签,很快就能恢复使用。P12证书导出导入作为整个签名流程的基础,只要掌握正确的操作方法,就能避开绝大多数新手坑,整个过程顺畅又稳定。