iOS 的 (签名验签)Code Signing 体系
发布时间:2023-04-04 11:12:29 所属栏目:教程 来源:
导读:iOS中的Code Signing体系非常复杂,对新手非常不友好,虽然目前网上已经存在大量文章对此进行比较透彻的分析,最核心的部分已经讲解得非常清楚,我阅读了这些文章后,确实从中学习到不少知识,但我始终还是对Code Si
|
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文件是iOS上的App安装文件,其实它只是一个压缩包,等同于.zip格式,用mac OS自带的归档实用工具可以直接对它解压,可以看到里面的内容 对比两种情况的.ipa文件,可以看出它里面最主要的是Payload文件夹,而Payload文件夹里面放的就是该App对应的.app文件 右击.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文件 Code Signing 正常情况下(非越狱),所有App想要安装到iOS设备上,只有以下几种方法 非App Store 真机调试 Ad-Hoc In-House App Store 无论是哪一种方法,都需要先把iOS项目编译成.app文件,然后进行签名。按照惯例,需要分析一下Code Signing (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
