文章插图
2.3 其他签名从AppStore下载安装App只需要一次数字签名就足以保证安全性,但除了这种途径苹果还有其他的安装方式:
- 开发中连接设备到Xcode进行调试安装
- AD-Hoc内部测试安装,需要先获取设备UDID并注册,并且有最多100台设备的限制
- In-House企业内部分发,安装设备数量无限制,但安装后需主动在设置中选择信任证书
- Mac 钥匙串访问 在本地生成一对公私钥钥匙对,下面默认为公钥L、私钥L(L:Local) 。
- Apple已有一对公私钥钥匙对,私钥A在Apple后台,公钥A内置到每一台iOS设备终端(A:Apple) 。
- 上传公钥L至Apple后台,使用私钥L对公钥L进行数字签名生成签名证书.cer,同时使用私钥L对额外信息(使用什么证书打包、AppID、打包的App包含了哪些功能、可以在哪些设备上安装)进行签名生成描述文件Provisioning Profile,之后将.cer和Provisioning Profile下载安装到Mac机器上 。
- 编译打包app,选择签名证书.cer,打包指令会自动找到该证书对应的私钥L(能匹配是因为钥匙对是成对出现的,前提是本地必须已经存在L私钥,也就是p12的安装),然后使用私钥L对app进行签名 。这些签名数据包含两部分:Mach-O可执行文件会把签名直接写入这个文件中,其他资源文件则会保存在_CodeSignature目录下 。你可以将打包生成的.ipa文件另存为.zip,解压后对Payload文件夹中的.app文件右键、显示包内容,就可以看到签名数据 。另外签名过程中对于App内包含的动态库以及插件(Plugins、Watch、Frameworks文件夹),每一个都会单独进行一次签名,并生成各自的Mach-O可执行文件和_CodeSignature 。签名数据指代码内容、App包含的所有资源文件,只要其中有任何改动,都必须重新签名才有效 。
- 打包的过程中会将描述文件Provisioning Profile命名为embedded.mobileprovision放入到打包app中 。
- 安装/启动,iOS设备使用内置的公钥A验证embedded.mobileprovision是否有效(设备是否在允许安装列表内),同时再次验证里面包含的.cer证书签名是否有效(证书过期与否)并取出公钥L 。
- embedded.mobileprovision验证通过,就使用公钥L解密验证app签名信息:AppID是否对应、权限开关是否跟app里的entitlements一致等等 。
- 所有验证通过,安装/启动完成 。
文章插图
【为什么有些APP没有上架App Store?iOS 打包签名内幕】
以上流程便是开发调试、AD-Hoc、In-House等方式打包安装App的过程,区别只在于第⑤步中设备IDs的匹配规则不一致 。开发调试只安装当前联调的设备;AD-Hoc允许安装到已在开发者账号下注册过的设备,且每年最多允许100台;In-House无设备数量限制,常用于企业内部App的分发 。
推荐阅读
- 福建白茶,8个来自福建
- 抖音很火的孟婆汤视频 郑州孟婆汤为什么那么火
- |为什么小鱼什么都吃,大鱼却总爱挑食?深度分析钓鱼用饵思路
- 为什么送茶不能送一盒 喜茶鲜肉月饼价格多少钱一盒
- 白茶福鼎价格,福鼎焕珍百茶讲解白茶的价格为什么这么高
- 抖音橱窗开通了为什么绑定不了账户 抖音橱窗添加不了商品怎么办
- 生普功效,为什么选择纯生晒工艺的小青柑好
- 生普价格,为什么价格差别那么大
- 怎么取消抖音达人资质认证 抖音个人认证为什么就是不能通过
- |为什么野钓主播在野外钓鲫鱼时总能爆护?揭秘野钓主播的几种套路