iOS 重签名

今天来聊下给包进行签名

ipa 重签名的作用,不必重新打包,和配置其它第三方获取 appkey 等操作,直接重签名之后依然可以拥有这些功能,更快的发布测试或者灰度版本。当然了解重签名,对自己app的安全也有很大原意义,只有了解重签名才能更好的保护app。

准备工作

1、待重签名ipa包(xxxx.ipa),证书和配置文件(可以使用个人开发者账号,本文介绍的即这个方式)创建文件夹 /resign ,将ipa包放进文件夹 /resign

2、生成 entitlements.plist 文件
打开Xcode 创建一个工程hello,该工程使用个人开发者账号run出包,进Xcode的Product文件夹拿出生成的包hello.app 解压 拿出里面的文件 embedded.mobileprovision 将该文件放入文件夹 /resign

将embedded.mobileprovision 转为plist文件
security cms -D -i embedded.mobileprovision > embedded.plist
转出来的plist文件样式如下

截屏2021-05-01 下午4.16.55.png

从上面plsit文件取出我们需要的 entitlements (截图中红色部分)
执行
/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' embedded.plist > entitlements.plist

开始重签名

如下操作都是在 /resign cd resign
1、解压 xxxx.ipa 包(如果无法直接解压,可以改后缀改为 xxxx.zip)解压后取出 xxxx.app
unzip xxxx.ipa

2、删除原有签名
rm -rf Payload/xxxx.app/_CodeSignature/

3、替换配置文件
cp embedded.mobileprovision Payload/xxx.app/

4、更改包里的 bundleId 打开包里的 info.plist 改为hello工程对应额 bundleId

5、签名
证书的名称你可以通过mac自带的钥匙串查看
codesign -f -s "Apple Development: xxxxxx@xx.com (LYERYXNM94)" --entitlements entitlements.plist Payload/xxxx.app/

终端输出: Payload/xxxx.app/: replacing existing signature
即表示签名成功

5、打包
zip -r resign_hello.ipa Payload/

6、此时就可以使用xcode 安装上面的ipa了 如果安装不成功可以检查下哪里出了问题,经常出问题是忘了第4步

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享