iOS 的 (签名验签)Code Signing 体系

iOS中的Code Signing体系非常复杂,对新手非常不友好,虽然目前网上已经存在大量文章对此进行比较透彻的分析,最核心的部分已经讲解得非常清楚,我阅读了这些文章后,确实从中学习到不少知识,但我始终还是对Code Signing体系中很多相关的地方有着疑惑,于是决定认真地探究一番。本文会引用一些比较好的文章中的内容和图片,加上一些我个人的理解进行分析,有些内容本文不再重复,有需要的请阅读本文最后的参考文章。

概念

公开密钥加密、数字签名、证书这些通用的基本概念这里不再多说,主要提一下iOS上特有的东西

.certSigningRequest

点击mac OS钥匙串访问里的 证书助理 -> 从证书颁发机构请求证书,最后会创建出一个.certSigningRequest文件,其实这个过程就是创建了一对公私钥

  • 其中.certSigningRequest文件保存着
    • 申请者信息申请者的公钥
    • 摘要算法
    • 公钥加密算法
  • 私钥保存在 keychain

证书

AppleWWDRCA

iOS 以及 mac OS(在安装 Xcode 时)将自动安装 AppleWWDRCA.cer 这个中间证书(Intermediate Certificates),它实际上就是 iOS(开发)证书的证书,即根证书(Apple Root Certificate)。

iOS App Development

iOS的开发证书,在开发阶段进行真机测试时需要用到的证书。可以在苹果开发网站上手动创建,需要上传.certSigningRequest文件;或者使用Xcode自动创建。

iOS Distribution

iOS的发布证书,可以用于进行 Ad Hoc 测试、打包上传到 App Store 或者打包成 Enterprisee(In-House) 类型供企业内部使用。可以在苹果开发网站上手动创建,需要上传.certSigningRequest文件;或者使用Xcode自动创建。

.p12

mac OS钥匙串访问里选择一张证书,右击该证书,选择导出"xxxxx",然后设置密码,可以导出该证书对应的.p12文件。.p12文件包含个人信息、公钥和私钥,也就是证书 + 私钥。iOS类型的每种证书同时存在数量有限制,而证书是依靠mac OS上的.certSigningRequest文件创建的,所以正常情况下,每种类型的证书只能在有限的Mac电脑上使用,如果需要在更多不同的Mac电脑上进行App开发、测试、签名,可以导出对应.p12文件代替证书来使用。

Provisioning Profile

Provisioning Profile的文件格式为.mobileprovision,里面包含着

  • 可以使用的证书
  • App ID,由 TeamID 和 BundleID 组合而成,类似于 A1B2C3D4.com.domain.appName 形式
  • 可安装该App的设备列表的UDID
  • Entitlements,授权文件,列出了App可以进行哪些行为
  • 以上信息的签名

在苹果开发网站上手动创建,或者使用Xcode自动创建。

.ipa

.ipa文件是iOS上的App安装文件,其实它只是一个压缩包,等同于.zip格式,用mac OS自带的归档实用工具可以直接对它解压,可以看到里面的内容

用于上传App Store的.ipa文件

App Store下载的.ipa文件

对比两种情况的.ipa文件,可以看出它里面最主要的是Payload文件夹,而Payload文件夹里面放的就是该App对应的.app文件

.app

右击.app文件,选择显示包内容,可以看到里面的内容

用于上传App Store的.app文件

从App Store下载的.app文件

可以看出.app文件主要包含四个部分:

  • Mach-O格式的二进制可执行文件,这个是一个App最重要的文件,我们编写的Objective-CSwift代码都被编译在里面
  • 资源文件,包括:.bundle文件,.framework文件,.dylib文件,.nib文件,图片文件,音视频文件,字体文件等所有项目用到的文件
  • CodeResources,签名信息
  • embedded.mobileprovision文件,或者entitlements文件
    • 对于没有上传App Store的.app文件,里面会包含embedded.mobileprovision文件,没有entitlements文件
    • App Store下载的.app文件,里面会包含.entitlements文件,没有embedded.mobileprovision文件

Code Signing

正常情况下(非越狱),所有App想要安装到iOS设备上,只有以下几种方法

  • 非App Store
    • 真机调试
    • Ad-Hoc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值