iOS 打包预备
本文首发在我的个人博客: http://blog.shenyuanluo.com/
,喜欢的朋友欢迎订阅。
做 iOS 开发的都知道,打包必需准备好 证书 和 配置文件;没有这两个,将无法打包给别人测试或者上传 App Store
。
那什么是证书?什么是配置文件呢?要了解这两个东西,先来了解一下其原理。
签名
我们知道,数据在传输过程中,安全性很重要;接收方怎么判断接收到的数据是 完整的 并且是 合法的 呢?
-
完整性:是指数据自
发送方
发出后,在到达接收方
的过程当中未发生任何改动、丢失。 -
合法性:是指
接收方
接收到的数据是来自可信赖的发送方
。
MD5消息摘要算法
MD5 摘要MD5 消息摘要算法(MD5 Message-Digest Algorithm):是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
完整性
发送方通过 MD5 算法 对数据生成 摘要(Digest)
,然后把数据和摘要一起传输;接收方在接收到数据之后,通过同样的 MD5 算法对数据部分生成摘要,再通过对比接收的摘要是否一致来判断数据是否完整。
对称加密
对称加密对称加密(Symmetric-key algorithm):是在
加密
和解密
时使用相同的密钥,或是使用两个可以简单地相互推算的密钥的一种算法。
非对称加密
非对称加密非对称加密(Asymmetric-key algorithm):是需要两个秘钥,一个是公开秘钥,另一个是私有秘钥;使用
其中一个
秘钥进行加密,加密后的密文只能用对应的另一个
秘钥进行解密的一种算法。
合法性
发送方
使用非对称加密算法中的一个秘钥对数据进行加密,接收方
使用对应的另一个秘钥对接收到的数据进行解密,如果可以解密,则认为这数据是合法的。(理论上:对称加密也是可以的。)
数字签名
数字签名(Digital Signature):通常定义两种互补的运算,一个用于签名,另一个用于验证。
常见的数字签名形式:
-
发送方
通过 MD5 算法 对数据生成摘要
,然后使用 非对称加密算法 其中一个秘钥对摘要进行加密得到签名
,之后将数据和签名一起传输; -
接收方
在接收到数据之后,使用对应的另一个秘钥对签名进行解密得到摘要,验证数据的合法性,然后再对数据通过 MD5 算法 生成摘要,对比解密得到的摘要,验证数据的完整性。
数字签名
由此可见 数字签名
对数据的安全传输提供了有力的保障。但是,这样的保障是有前提的,那就是必需保证 发送方的公钥是绝对安全的。要不然,伪造公钥的第三方,可以发送 病毒数据
给接收方,而接收方却使用 假的公钥,错误验证了 病毒数据
是 “完整且是可信赖” 的,这样的后果将不堪设想。
由此可见,保障 公钥
的安全是多么的重要;但是怎么保证发送方公钥的安全呢?这就需要 数字证书 来保障了。
证书
数字证书(Digital Certificate):是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在
Internet
上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的。
数字证书认证机构
数字证书认证机构(Certificate Authority,缩写为CA):是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
通常的做法是:
- 发送方将
公钥
交给 “Internet” 可信任的 数字证书认证机构,然后该机构利用非对称加密算法用CA的私钥
对发送方的公钥和一些相关信息(如:有效期、发送方基本信息等)进行加密,得到 证书,之后将数据、签名和证书一起传输; - 接收方接收到数据之后,对证书部分使用该机构对应的
CA的公钥
进行解密得到发送方公钥
,之后利用该公钥对签名进行解密验证其合法性和完整性。
数字证书
由此可知道,在网络上安全的传输数据,一般需要两对密钥:发送方公私钥 以及 CA 的公私钥。
iOS 签名认证
我们知道,在 Apple 的生态圈中,安装的任何软件都是需要经过 Apple 认证才被允许安装的。那么怎么对 iOS 平台的 APP 进行安全认证呢?
其大致流程如下:
- 在 maxOS 本地生成一对秘钥;
- 上传
公钥
向 CA(Apple 开发者中心)申请数字证书; - 安装数字证书,此时在钥匙串中会存在一个证书以及该证书对应的本地的私钥;
- iOS APP 打包时,Xcode 利用本地的私钥对 APP 进行签名;
- 将证书、签名 和 APP 上传 App Store(或给测试人员);
- iOS 设备安装 APP 时,使用设备内置的(CA)公钥解密证书,进而对该 APP 进行验证其安全性和完整性。
小结
说了这么久,那到底什么是 iOS 证书
和 配置文件
呢?
-
iOS 证书:就是 iOS 开发者将
macOS 本地的公钥
上传至 Apple 开发者中心,通过CA私钥
对macOS 公钥
和开发者的一些信息进行加密得到的数字证书。 - iOS 配置文件(Provisioning Profile):是包含了对应的证书、开发组名、组内设备、应用 ID 以及一些能力等配置信息的文件。