简单的理一下iOS应用打包用到的Certificate与Provision Profile的关系
1.Certificate ——证书
1.1证书是什么?
百度百科是这么解释的:
由此,知道证书是由权利机关办法的用以证明资格或权利的文件.
1.2 我们向Apple申请证书是在干什么?
我们向Apple申请证书,就是在向权利机关(Apple)申请资格(开发/推送/发布..).而Apple颁发给我们的证书就是对资格的证明.
1.3 申请证书时,为什么要有CSR?
我们来看一下申请证书时的提示:
翻译一下:
当CSR文件创建的时候,会自动生成一对私钥和公钥.私钥存储在本地电脑.mac上,私钥存储默认存储在登录钥匙串中,可以在钥匙串的分类钥匙下查看.请求到的证书会包含公钥部分.
证书拿到手,最重要的一件事是如何证明这个证书是你的.不是假的,不是别人的.
CSR就提供了如何证明的方法.
CSR生成的同时,生成一对私钥公钥,私钥保存在本地,用来加密数据或者解密公钥加密的数据.公钥包含在CSR中,Apple用来加密数据及解密私钥加密的数据.这样就像把数据放在带锁的箱子中传递,使得Apple可以通过公钥来验证你就是你.
1.4 为什么要通过.p12来传递证书?
因为直接从Apple下载的证书只有公钥,没有私钥.没有办法证明这个证书是你的(潜台词:没有办法证明你有这个权利).而从本地钥匙串中导出.p12文件是包含私钥的,换句话说,可以把证书上描述的权利赋予他人.
2.Provision Profile ——描述文件
2.1 描述文件是什么?
描述文件,顾名思义,就是描述应用的文件.
2.2 描述文件描述什么?
如图:
注意到描述文件里边包含了App ID , Certificates , Devices. 说明生成描述文件需要用到这些信息.
那么再来对照一下Developer/Certificates, Identifiers & Profiles
看着这个排布顺序,有没有感觉Provisioning Profiles 在最后就是对上面信息的总结呢?
(当然,描述文件中还有其他信息,这里着重点明开发者时常操作的配置间的关系)
3.XCode中Code Signing的配置
3.1 Code Signing —— 代码签名
使用证书中公钥对应的私钥对代码进行签名(加密代码).应用在安装之后会用公钥解密,来验证应用的合法性(来源可信,内容完整).
3.2 注意事项
1.证书一定要有对应私钥.
如果是别人传递的,一定要通过生成.p12文件的方式.
2.要有对应描述文件的证书.
本地要保留有描述文件中包含的证书.