一、名词解释

Bundle ID:应用的唯一标识,相当于应用的身份证号

开发者证书:由苹果签发的数字证书,包含开发者公钥、teamID、有效期等,用来证明开发者身份

描述文件(.mobileprovision):打包文件,包含允许安装的设备的UDID、关联的bundleID、对应的开发者证书、应用权限。

二、详细过程

1、配置项目的基础信息(绑定bundleID、team)

确定bundleID:这个bundleID需要与苹果开发者中心注册的APP ID一致

关联开发团队:通过团队关联的开发者的合法身份,确保后续证书和描述文件的申请权限

2、生成证书和密钥对

申请开发者证书:数字证书包括开发者公钥、苹果签名、应用有效期、teamID等,数字签名是用苹果自己的根证书私钥进行加密的,证明该开发者经过苹果授权。

3、创建描述文件

描述文件内容开发者在苹果开发者中心手动/自动生成,包含 允许安装的设备UDID、关联的bundleID、对应的开发者证书(步骤2生成)、应用可使用的权限,该描述文件用苹果的私钥签名。

一句话来说就是:只能在该设备上安装对应开发者开发的某一bundleID的应用。

4、应用签名(确保内容未被篡改)

xcode将代码编译为可执行文件,打包成.app的格式(包含代码、资源、info.plist等),然后对.app里的所有文件通过哈希算法计算出哈希值,之后用本地私钥进行加密生成数字签名,

将应用的数字证书、开发者证书、描述文件 打包到.app 的_CodeSignature目录

5、设备验证与安装

Xcode 通过 USB 或无线将签名后的.app发送到 iPhone。

验证描述文件:利用苹果公钥进行解密,然后验证描述文件中的bundleID与应用info.plist一致,本机UDID在描述文件的允许列表中。

开发者证书验证:用苹果公钥进行解密确认开发者身份可信,在开发者证书中拿到公钥

应用完整性验证:用证书中的公钥解密应用签名,然后重新计算.app内文件的哈希值,两次的值进行对比,确保应用未被篡改。

首次安装需用户在设置→通用→VPN与设备管理中信任该开发者证书(将其加入设备信任列表)。

然后完成安装,可正常启动。

更多推荐