最近遇到一个问题就是我们公司用自己的企业账号
上的证书打包的ipa文件每过一年都需要重新重新把现在的一些ipa文件重新打包发布管理,这种做法效率其实很低下,因为有可能我们引用的三方库已经升级更新后会造成工程不可用,需要花费很大精力去进行同步升级工程代码才可以,那么我们其实有更好的方法去解决这种困境,我们可以通过对ipa文件重签名来替代重新打包(ipa)这种比较传统笨拙的方式来解决重签名的问题。
上面这段写的太啰嗦了,其实意思是企业证书或描述文件到时间后会过期,过期后造成原来的已经发不到MDM管理平台的ipa包和用户已经下载的包都不可用,这个时候我们就需要更新证书或描述文件来解决这个问题,通过重新使用源代码工程重新通过XCode更换证书或描述文件解决或者通过直接使用工具来重新对原有ipa重新签名来解决,总之两种方式都可以,下面我们着重研究一下使用原有ipa文件替换企业证书和描述文件重签名的方式。
因为我们自己使用的是企业账号并且我们不是盗用别人的包来使用,我们就不用做ipa包的砸壳iOS逆向了。
一、准备重签名ipa需要的文件内容
1. 企业证书的准备
证书必须是通过申请证书的电脑导出的p12文件,因为只有这样才会带上专用密钥,这样才能通过双击正确安装到钥匙串实现信任认证。
注:公司证书和个人证书其实也可以,但重签名出来的包只能安装到配置文件对应添加过的测试设备,太局限了,我们在这里不多做研究。
2. 下载对应签名的描述文件
需要通过苹果企业账号平台下载mobileprovision
文件,并修改名字为embedded.mobileprovison
3. 准备好我们需要重签名的ipa文件
接下来到我们主角出场了,我们需要操作的对象老的ipa文件我们需要提前准备好。
二、 准备重签名需要的环境
1. 安装 homebrew
命令:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2. 安装 ruby
命令:brew install ruby
更新 ruby 版本
3. 安装 sigh
命令:sudo gem install sigh
如果出错那就换成gem install sigh安装过程是漫长的。(在安装 sigh 之前,你得检查 gem的镜像源,现在一般为https://gems.ruby-china.org如果提示 timeout 还是啥的,请把 https 的 s 去掉,重新添加) 设置可以参考Ruby China
三、 开始重新签名
1. 把需要重签名的ipa文件和下载重名成embedded.mobileprovison
配置文件放到同一个目录
记住这个配置文件一定要重名成固定我们所指出的这个名字才可用。
2. 在命令行使用cd命令到这个我们准备好的目录,并执行sigh resign
或fastlane sigh resign
命令
3. 执行完签名命令会要求我们输入Signing Identity
这个Signing Identity
是我们在输入执行sigh resign
或fastlane sigh resign
命令后会列出我们所有开发者证书的16进制串,我们可以复制对应证书的16制串粘贴到这回车就可以了,剩下就等着命令自动对保内所有的Frameworks
重新签名。