我接触苹果签名行业快六年了,从最早帮创业朋友做内测安装包,到现在帮不少中小商家做H5封装IPA签名,大大小小的坑踩过,也摸透了各种签名机制的真实情况,今天就以第一人称给大家做一次深度分享,从大家问得最多的P12签名证书怎么获取开始,讲透整个苹果签名的核心逻辑。
苹果签名的核心技术原理其实很好理解:iOS系统本身对所有安装的应用都做了签名校验,只有经过苹果官方信任的证书签名的应用,才能通过系统校验正常安装,上架App Store的官方应用就是用苹果官方认可的证书完成签名的,而那些没有走官方上架的IPA包,不管是内测应用、H5封装应用还是不符合官方上架规则的应用,想要在iOS设备上安装,就必须做IPA签名,本质就是用一张苹果已经信任的开发者证书,给你的IPA包做重签名,让iOS系统误以为这个应用是经过合法授权的,从而允许安装运行。而P12签名证书,就是存储了开发者证书私钥的导出文件,是签名过程里必不可少的核心文件,那P12签名证书怎么获取?其实分两种情况:如果你自己有苹果开发者账号,不管是99美元一年的个人/公司开发者账号,还是299美元一年的企业开发者账号,都可以自己生成:先在Mac的钥匙串访问工具里生成证书签名请求文件,然后登录苹果开发者后台,创建对应类型的开发者证书,上传请求文件后下载证书,双击导入钥匙串,再从钥匙串里右键导出,选择P12格式,设置密码就能拿到属于自己的P12证书了;如果自己没有买开发者账号,或者只是偶尔用一次签名,找正规签名服务商就能获取可用的P12证书,不用自己折腾,我大部分帮客户做签名的时候,都是直接用服务商的证书,方便省心。
聊完基础的获取和原理,再说说现在正规服务商都在用的证书池机制,这个机制其实是保证签名稳定的核心。我最早踩过的大坑就是找了没有证书池的小服务商,整个服务商手里只有两三张企业证书,几百个应用全签在这两三张证书上,结果不到半个月苹果检测到证书异常,直接吊销,所有签过的应用全掉签,服务商折腾了一周才弄到新证书,那时候我帮客户做的推广H5封装应用停了一周,赔了不少推广损失。后来换了头部服务商才知道,证书池就是服务商提前储备几十上百张不同主体的开发者证书,把不同类型、不同流量的应用分散签在不同证书上,比如我做的工具类H5封装和客户的本地生活类应用,会分到不同的证书池,单张证书签的应用数量控制在安全范围内,大大降低了苹果吊销的概率,就算某一张证书因为举报或者检测掉签了,证书池里还有大量备用证书可以直接用,补签速度非常快,不会出现全平台掉签找不到证书的情况,这也是为什么正规渠道的签名稳定性比小作坊高很多的核心原因。
接下来聊UDID绑定,这个是超级签名和TF签名里绕不开的核心概念。UDID是每一台iOS设备独有的识别码,相当于设备的身份证,苹果的99美元个人开发者账号,每个账号最多只能绑定100台UDID设备用于开发测试,超级签名就是用的这个规则:每一台要安装你应用的设备,都需要把它的UDID上传到开发者账号后台绑定,获得苹果的授权之后,再用这个账号的P12证书给IPA做签名,这样只有绑定过UDID的设备才能安装应用,所以超级签名都是按设备数量收费的,绑定一台算一台的钱。我帮创业团队做小范围内测的时候就常用超级签名,三十多个测试人员,绑定三十多个UDID,总费用才一百多,非常划算,当然我也遇到过问题,比如之前有用户换了手机,需要重新绑定UDID,就得重新扣费,还有一次服务商批量导入UDID的时候出错,绑错了十多个设备,折腾了半天才重新绑定好,不过整体不影响,服务商也很快就处理好了。
很多新手问我重签流程到底是怎么操作的,我自己亲手操作过很多次,完整的重签流程其实很清晰:第一步拿到未签名的原始IPA包,不管是你自己开发的,还是H5封装出来的半成品IPA,先解压开,删除原来的旧签名信息,修改Info.plist里的Bundle ID信息;第二步根据你选的签名类型,匹配对应的P12签名证书和描述文件,描述文件里就包含了UDID绑定信息或者证书授权信息;第三步就是用签名工具把新的签名信息写入IPA,重新打包成签名好的IPA,之后生成分发链接就能让用户下载安装了。如果是掉签之后补签,其实就是换一张有效的未吊销证书,重新走一遍这个流程,很快就能完成,我上个月遇到一次掉签,服务商的系统自动检测到证书吊销,不到十分钟就完成了补签,用户只需要重新点一下分发链接安装就行,不需要做其他操作,体验还是很好的。
现在很多人最关心的就是超级签名与企业签名的真实稳定性对比,还有不同渠道的价格,我做这么多年,给大家说真实的市场情况,绝对不忽悠:首先价格,不同渠道不同类型的签名价格非常透明,共享证书的企业签名,一般小渠道是50-100元一个月,正规渠道的稳定共享签名是80-150元一个月,掉签免费补;独立证书的企业签名,小渠道是200-400元一个月,正规大渠道是300-800元一个月,专属大流量证书是1000元以上一个月;超级签名一般按设备收费,小渠道低价的1-2元一台,都是用黑号,正规渠道是3-8元一台,量越大越便宜,一千台以上能谈到2-3元一台;TF签名一般是按次收费,包上架成功的话,普通应用是200-300元,H5封装的复杂应用是400-600元,一次上架可以用到测试期结束,续期也很便宜;官方上架的话,服务费从几百到几千不等,看应用类型,能过审的话就是永久稳定。
从我这么多年的使用体验来看,八成以上的情况,只要选对正规渠道,签名都是稳定好用的,我现在帮客户做的十几个签名应用,大部分都能稳定运行两三个月甚至更久才会掉一次,掉签之后补签也很快,很少影响正常使用。当然我也遇到过掉签、证书出问题的情况,比如去年有一个客户的企业签名应用被同行恶意举报,证书当天就被苹果吊销了,因为服务商有证书池,当天就换了新证书补签好了,两个小时就恢复正常,也没有额外收费,整体影响很小。对比超级签名和企业签名的稳定性:超级签名因为把设备分散到上百个个人开发者账号里,单账号绑定不到100台设备,被苹果检测到的概率很低,稳定性比共享企业签名高很多,和独立企业签名差不多,超级签名适合小批量设备使用,价格划算,企业签名不限设备安装数量,适合大流量推广,批量使用成本比超级签名低很多。
除此之外,现在很多人会选TF签名和官方上架,官方上架是所有分发方式里最稳定的,只要过审上架App Store,就永远不会掉签,也不会有校验问题,所以只要能符合官方规则,我都推荐大家优先做官方上架,但是很多H5封装应用、内测应用、行业工具类应用不符合官方上架规则,过不了审,这时候TF签名就是最好的选择,TF签名是苹果官方TestFlight测试渠道的签名,本身就是苹果官方认可的,所以稳定性比超级签名和企业签名都高,基本不会掉签,只有90天的测试期,到期了重新上传一次就可以,非常稳定,我两年前帮客户做的一个TF签名的H5封装应用,到现在都正常使用,从来没掉过签。
整体来说,苹果签名技术发展到现在已经非常成熟了,只要你不贪便宜找那种几块钱一个月的小作坊,选正规有证书池机制的服务商,大部分时候都能稳定使用,偶尔的掉签补签都是行业正常情况,苹果的审核政策就是这样,没有人能做到百分百永远不掉签,只要服务商补签及时,响应快,就不会影响正常的使用和推广。对于很多没法走官方上架的应用来说,IPA签名加上合理的分发方式,已经是目前最成熟的解决方案了,不管是小范围内测还是大范围推广,都能找到对应性价比的签名方案。