P12签名证书与pem证书的实际使用感受
我自己业余做原生开发,捣鼓了很久做出来一款记录日常的小工具,做完之后想先给身边熟悉的朋友试用提提意见,一开始没想着直接走AppStore上架,一来上架要等审核,一堆资质材料要准备,我个人做开发,很多东西弄起来太麻烦,二来也怕初始版本功能不完善,审核过不了白折腾,所以听圈里朋友说可以先做苹果签名用上,就开始自己折腾各种签名相关的内容,这一折腾就是好几个月,踩了不少坑,也摸出来不少实用的经验,连一开始分不清楚的P12签名证书和pem证书,现在也能说出来个大概区别。
第一次拿到签名好的安装包是找了个网上的小商家做的企业签名,那时候我连怎么安装都不会,商家给我发了ipa文件,我当时是用电脑端的助手工具装到手机上的,装完之后我点开图标,直接弹出提示说未受信任的开发者,根本打不开,我当时还以为是安装包损坏了,或者我手机出了问题,折腾了半天重启,重新安装还是不行,后来去问商家,商家才告诉我要手动去设置里信任证书。我按照商家说的步骤去找,一开始还找错了地方,跑到隐私设置里翻了半天什么都没找到,后来才知道要进设置的通用栏,往下滑找到设备管理相关的选项,进去之后就能看到对应的企业级证书,点击进去选择信任就能打开APP了。后来帮朋友装的时候才发现,不同版本的iOS系统,这个入口的位置还不一样,有些旧系统藏得更深,要搜关键词才能找得到,那时候帮一个用旧手机的朋友找入口,前后折腾了好半天才弄好,现在想想都觉得麻烦。
也是那时候我第一次知道签名要用到P12证书,商家找我要开发用的P12证书,我那时候根本不知道怎么导出,我只知道在Xcode里开发的时候自动生成了证书,不知道还要导出成P12格式,后来查了教程才知道,要打开电脑的钥匙串访问,找到对应的开发者证书,展开之后连同私钥一起选中,右键导出就能保存成P12文件,导出的时候还要设置密码,我一开始没设密码,导出之后发给商家,商家说文件不对无法使用,我又回去重新弄了一遍,设好密码导出来才没问题。那时候我还分不清楚P12和pem证书的区别,以为只是后缀不一样,后来做推送功能的时候,服务商让我提供pem格式的推送证书,我直接把P12发了过去,结果一直调试不成功,推送收不到,折腾了两三天才搞明白,P12是包含了开发者私钥的二进制格式证书,一般都是用来给APP本身打包签名用的,而pem是文本编码格式的证书,大多用在服务端和苹果的验证环节,比如推送通知的时候就要用到pem证书,格式不对根本没办法用,后来我靠着教程用命令把P12转成了pem格式,才把推送功能调试好,那时候才真正把两种证书的用途分清楚。
折腾企业签名的那段时间,我踩过最大的坑就是掉签,一开始选的是那种很便宜的签名,想着只是内测用用,没必要花太多钱,结果没用几天就出问题了,打开APP的时候图标直接变灰,点什么都没反应,我又去问商家,才知道这就是苹果签名里说的掉签,一般是签名用的证书被苹果封禁了,所以就没法用了。那段时间我掉签掉得都怕了,隔几天就掉一次,每次都要通知朋友重新安装,好多朋友嫌麻烦就不用了,后来我才问清楚,掉签其实也分情况,不同的签名掉签的概率不一样,解决办法也不同。一般来说,要是企业签名掉签,有些正规平台支持在线补签,用户只要扫个码就能直接恢复使用,不用删除原来的APP也不用重新下载,很方便,但我选的那种便宜的共享签名根本没有这个服务,只能删掉原来的安装包,重新下载商家新签好的包重新安装,我那一次就是因为掉签之后急着删了重新装,忘了把本地存的测试数据导出来,结果好多朋友存的内容都没了,现在想起来都觉得可惜。后来我换成了独享证书的企业签名,贵了不少,但确实稳定很多,很长时间都没掉过签,才知道原来共享证书就是一堆APP共用同一个P12证书签名,人多了容易被苹果检测到,掉签概率自然高,独享证书就是自己用,被检测到的概率低很多,自然稳定。
后来朋友多了,企业签名用着总还是担心掉签,我就开始尝试超级签名,超级签名我之前听人说过,是用个人开发者账号的P12证书来签名,安装流程比企业签名简单太多,不用电脑装,也不用手动去设置里信任证书,只要在手机浏览器里打开分享的链接,点一下安装就能直接用,我当时试了之后觉得真的太方便了。一开始我找的商家给我用的是他们自己提供的共享账号,结果没用多久又掉签了,后来才知道,超级签名要稳定就得自己提供正规的个人开发者账号和P12证书,找商家帮你做签名,这样自己的账号自己管,只要不违规操作,基本不会被封,也就不会掉签。我自己的账号弄好之后,超级签名用了很久都没出问题,确实很稳定,不过超级签名也有局限,就是每个账号能加的设备数量有限,适合小范围内测用,人多了就不够用了。我自己的P12证书导出之后,一直存在加密的云盘里,不敢随便泄露,之前看到圈里有人说自己的P12证书泄露,被别人拿去签名用满了额度,还把账号封了,所以一直小心翼翼的,后来换电脑的时候差点忘了备份P12,还好提前导出来存在云端,不然又要重新申请证书重新打包,想想都麻烦。
等到要测试的人越来越多,超级签名的额度不够用了,我就听朋友劝去弄了TF签名,也就是TestFlight内测,苹果官方的内测渠道,说实话,用了TF签名之后我才知道什么叫稳定,因为是苹果官方的渠道,根本不会掉签,只要你上传的时候过了审核,就能一直用,就算到期了重新上传一遍就能接着用,审核也比AppStore上架宽松很多,我当时提交之后没多久就过了。唯一的麻烦就是用户要先下载TestFlight这个官方应用,然后才能通过邀请链接安装我的小工具,有些朋友觉得多下一个应用麻烦,不过用几次也就习惯了,整体体验比共享企业签名好太多,稳定度真的没话说,我那段时间用TF,从来没有出过掉签的问题,省了好多心。
我也试过H5封装,一开始开发的时候我先做的网页版,想快点弄成APP内测,就找了个服务商把网页封装成了APP壳,然后再做签名,说实话,H5封装的好处就是快,成本低,更新也方便,改内容只要改网页就行,不用重新签名打包,但是体验真的比不上原生,网络稍微不好就卡得动不了,很多原生的权限调用也出问题,比如调用相册传照片,总是弹不出来权限申请,而且我当时找的那个小服务商,还偷偷在封装的壳里加了广告,我自己用了好久才发现,后来换了正规的封装才去掉广告,体验好了一些,但还是不如原生流畅,所以后来我改成原生开发之后,就再也没用过H5封装了,不过要是做个简单的展示类应用,临时用用,H5封装还是挺方便的。
等到小工具改得差不多了,功能也完善了,我就准备正式上架AppStore,上架其实也要用到P12证书,就是发布用的证书,导出P12之后打包提交就行,上架的流程虽然麻烦,审核也严格,我第一次提交还被打回来改了一次,第二次才过,但上架之后真的是最稳定的,用户直接从AppStore搜索就能下载,根本不用担心掉签的问题,用户也更信任,所以要是打算正式推广,上架AppStore肯定是最好的选择。
折腾了这么久,我也摸出来不少让签名稳定流畅的方法,一开始我总是贪便宜选那种低价的共享签名,结果天天掉签,折腾得不行,后来换了方法之后就再也没出过什么大问题。要是只是小范围给身边朋友内测,用超级签名就够了,一定要自己提供正规的账号和P12证书,不要用商家的共享号,稳定度完全不一样,安装也方便,不用折腾信任证书的步骤。要是人数多一些,就直接选TF签名,苹果官方的渠道,价格也不贵,审核很容易过,基本不会掉签,就是多一步下载TestFlight,整体体验还是很好的。要是真的因为种种原因不能上TF也不能上架,一定要用企业签名的话,那就选独享证书的,不要选共享的,虽然贵一些,但是能省掉很多掉签的麻烦,不用天天折腾重新安装。要是打算正式用,给很多用户用,那还是咬咬牙走AppStore上架,一步到位,最稳定体验最好。
我这段时间踩过的坑其实还有很多,比如导出证书的时候把P12和pem弄混,格式不对折腾好久,比如掉签之后急着删包丢了数据,比如贪便宜找了不靠谱的商家,掉签之后找不到人,这些问题其实只要多注意就能避免,证书一定要做好备份,分清楚不同证书的用途,不要贪小便宜找不靠谱的渠道,基本上就能顺顺利利的用。掉签之后其实也不用慌,先看看服务商能不能补签,能补签就不用重新下载,不能补签再删包重下,要是有重要数据一定要先想办法导出,别像我一开始那样丢了数据后悔都来不及。现在我身边有朋友要做苹果签名内测,都会来问我经验,我都会把这些踩过的坑告诉他们,让他们少走点弯路,毕竟自己折腾一遍才知道,选对了签名方式,真的能省好多心,不用天天跟掉签斗智斗勇,能把更多精力放在完善产品上。