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-C、Swift代码都被编译在里面- 资源文件,包括:
.bundle文件,.framework文件,.dylib文件,.nib文件,图片文件,音视频文件,字体文件等所有项目用到的文件 CodeResources,签名信息embedded.mobileprovision文件,或者entitlements文件- 对于没有上传App Store的
.app文件,里面会包含embedded.mobileprovision文件,没有entitlements文件 - App Store下载的
.app文件,里面会包含.entitlements文件,没有embedded.mobileprovision文件
- 对于没有上传App Store的
Code Signing
正常情况下(非越狱),所有App想要安装到iOS设备上,只有以下几种方法
- 非App Store
- 真机调试
- Ad-Hoc

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



