iOS证书之间的关系

2017-02-12  本文已影响148人  景天儿

Xcode8精简掉了大部分直接面对Provisioning Profile的机会,可以说是非常大的进步。

但如果长时间都对于iOS的证书之间的关系感到模糊,总归觉得不舒服。
后来发现了这篇文章漫谈iOS程序的证书和签名机制,非常好,做了一下笔记并结合自己使用中的疑惑进行了一次小结,如有错误,望指正。

先给结论:

  1. 选择哪个Provisioning Profile,就等于选择了用那个AppID、用公钥解密。
  2. 能不能打包上传成功,从根本上说取决于有没有私钥。

Provisioning Profile 也就是 .mobileprovision文件

我们知道每次打包,甚至运行的时候都需要选择Provisioning Profile,有时候还需要在Xcode的Preference中重新下载他们,那么这个文件究竟是做什么的呢
fastlane sigh download_all -u your_email@163.com --adhoc --force

简单来说,这个文件的目的在于,苹果需要知道,这个应用(App ID)是谁(开发者证书)提交(在开发测试)的。

这个文件包含的内容简单来说,

更详细的说,

这里的签名是苹果签的,跟我们的私钥没有关系。也就是说mobileprovision文件是苹果签名的。指签名算法么?也就是如何从工程计算出那一串数字?

数字签名

前面说到,Provisioning Profile是苹果用来检查提交代码的是谁,那么问题来了,苹果通过什么样的操作来确保,是你提交的应用呢?

答案就是数字签名

Certificates, CSR(Certificate Siging Request)

这是一个和Member Center交换信息,并生成Provioning Profile的过程中的通讯文件。

iOS证书和校验.png

团队开发 / p12文件 / 私钥

将最初申请证书的机器的私钥导出成.p12文件,并让其他机器导入,同时其他机器也应该安装下载下来的证书。这样团队中的成员,就都可以发布提交app了。

ipa组成

ipa组成.png

摘要算法

摘要算法是指,可以将任意长度的文本,通过一个算法,得到一个固定长度的文本。这里文本不一定只是文本,可以是字节数据。所以摘要算法试图将世间万物,变成一个固定长度的东西。摘要算法具有以下重要特性:

典型的摘要算法,比如大名鼎鼎的MD5和SHA。摘要算法主要用于比对信息源是否一致,因为只要源发生变化,得到的摘要必然不同;而且通常结果要比源短很多,所以称为“摘要”。

后记

后来发现了这篇文章[译] 理解 iOS 应用程序的代码签名 (CODE SIGN) 机制,其中的一些Q&A有一些参考价值。

上一篇 下一篇

猜你喜欢

热点阅读