> ipa签名 >

浅谈ipa签名

2020-04-22 阅读:

一、准备工作

1、解压ipa包


首先我们先从appstore下载一个ipa包,然后把这个包上传到蒲公英分发平台上,可以看出这是一个上架appstore的包。我们就用这个包来进行重签名实验,用另外一套证书进行重签名,生成一个adhoc的包。


选中ipa包,右键 -> 打开方式 -> 解压,如下图所示:

解压之后,会得到一个Payload的文件夹,里面包含一个xxx.app的文件,右键可以用"显示包含内容"的方式打开。

2、替换 embedded.mobileprovision文件


我们需要将自己打包中的embedded.mobileprovision文件替换掉目标ipa中的embedded.mobileprovision。

进入到目标ipa的文件目录下面,我们可以看到有一个embedded.mobileprovision文件,如下图所示:


找一个我们自己打包的ipa包,然后进行解压,进入到ipa的文件目录下,我们同样可以发现一个embedded.mobileprovision文件,如下图所示:

然后将我们自己的embedded.mobileprovision文件替换掉目标ipa文件中的embedded.mobileprovision。


3、生成授权文件(entitlements.plist)


(1) 将上一步的embedded.mobileprovision文件拷贝一份到Payload文件里面。如下图所示:

(2) 然后通过embedded.mobileprovision文件用命令行操作生成embedded_full.plist文件。


首先cd到Payload目录下面,通过“security”命令,从mobileprovision文件中生成一个完整的plist文件。


$ security cms -D -i embedded.mobileprovision > embedded_full.plist


(3) 然后通过embedded_full.plist文件用命令行操作生成embedded.plist文件。

二、重签名


需要进行重签名的主要包括两部分,整个的app文件和app文件里面的Framework。Framework文件夹下面的动态库都要进行重签名,否则安装之后会闪退。


1、动态库重签名

打开.app文件目录,文件里面有一个Framework的文件夹,里面包含了项目引用的所有动态库,(如果项目中没有使用任何动态库,当然就不会有这个文件夹,可以忽略此步骤),如下图所示:


重签名命令:



$ codesign -f -s “iPhone Developer: xxx (J5HYSJ3F78)” xxx.framework




//首先要先cd到Frameworks的目录下面,然后在执行如下命令

YuanCan:Frameworks ahdms$ codesign -f -s "iPhone Distribution: Changsha xxx Information and Technology Co., Ltd. (U33QHUFW3H)" Hyphenate.framework

Hyphenate.framework: replacing existing signature //执行重签名命令之后,会给出这句提示,代表重签名成功



2、.app文件重签名


下面我们要进行app文件重签名,与动态库重签名不同的是,app文件重签名还需要加上授权文件。


重签名命令:$ codesign -f -s “iPhone Developer: xxx (J5HYSJ3F78)” --no-strict --entitlements=entitlements.plist xxx.app

/首先要先cd到Poyload的目录下面,然后在执行如下命令

YuanCan:Payload ahdms$ codesign -f -s "iPhone Distribution: Changsha xxx Information and Technology Co., Ltd. (U33QHUFW3H)" --no-strict --entitlements=entitlements.plist HelloWorld.app

HelloWorld.app: replacing existing signature  //执行重签名命令之后,会给出这句提示,代表重签名成功




3、重新打包


重签名成功之后,我们需要将.app文件重新打包。进入Payload文件夹里面,把下面这三个文件删除掉。



将Payload文件压缩成zip的压缩包,然后将.zip改成.ipa,就重新生成了一个新的ipa包了。



我们来验证一下,是否真的重签名成功了。把Payloda.ipa包上传到蒲公英分发平台上,如下图所示:

一 概述

之前我在做iOS项目开发时,由于采用的是自己的开发者账号,在Xcode的General配置中勾选上Automatically manager signing 便再也不用管证书等一些问题,所有的一切都是由xcode自己来给你做。但是当涉及到团队开发,有时候需要共享一个数字证书和mobileprovision文件时,便有层出不穷的问题。尽管有些google一下也能解决,但是并不了解其实质原理,为何要这么做。
如果你对Provision profile(称为配置文件or描述文件)、CertificateSigningRequestP12Cer等等这些证书一知半解,相信本文可以解答你心中的疑惑。
本文会从原理出发,一步步解释iOS签名的各个处理流程,主要章节如下:

  • 摘要算法

  • 对称加密算法

  • 非对称加密算法

  • 数字签名

  • 数字证书

  • iOS签名机制与配置文件

  • iOS上build的处理流程

  • iOS app从appStore下载的验证流程

  • 加密算法在 HTTPS上的应用

二 摘要算法

网站友情链接: 微信号购买平台 微信号出售 买微信号 刷票 微信刷票 微信投票 快手刷粉丝 微信号出售 微信号批发 微信号购买 王者荣耀代练 苹果超级签名 ios超级签名 超级签名 刷票 王者荣耀代练 ios企业签名