我了解 RSA 加密背后的数学原理,但是,我无法将其与 Apple 的术语和身份验证过程相协调。我们有以下实体:
- 我的个人 key 对
- Apple 的 key 对
- 我的开发证书
- 我的分发证书
- Apple 的 Apple 全局开发者关系证书
- 我的开发配置文件
- 我的分发配置文件
以及以下不同的运行模式:
- 从 App Store 运行应用
- 运行为 Beta 测试而分发的应用
- 在开发环境中运行应用/调试
所有这些如何协同工作以实现目标?我所说的“一起工作”,是指明确表示什么、何时、何地的标志。
我现在的刺是:
- 我生成了一个公钥/私钥
- 我向 Apple 发出证书请求:我向他们发送我的公钥和一些关于我是谁的信息,并使用我的私钥对其进行签名。然后,Apple 使用一些加密哈希来验证信息,并且我确实拥有该公钥。然后,Apple 将我的信息与注册的 Apple 开发人员核对,如果一切顺利,则颁发证书(包括我的公钥),并使用他们的私钥对整个事情进行签名。可以拥有由 Apple 签署的用于不同目的的不同证书。
- 我将此证书包含在我想在其上运行代码的任何配置文件中(作为 ipa 的一部分,或以其他方式)
- 当我尝试在设备上运行应用时,如果设备意识到它不是由 Apple 直接签名的,它会查看我安装在其上的配置文件
- 如果 App ID checkout ,并且它是列出的注册设备之一,它会查看证书
- 它使用 Apple 的公钥检查证书的签名,以验证证书是否由 Apple 签名,从而设备可以信任证书的真实性
- 然后它使用证书中包含的我的公钥检查代码签名的应用程序,如果匹配,则它知道受信任的开发人员对应用程序进行了代码签名
- 现在可以运行应用了
我不知道 Apple 的全局证书是干什么用的?
Best Answer-推荐答案 strong>
通过开发者门户创建的配置文件由 Apple 签名。
您的配置文件中包含您的证书,因此 ipa 的协同签名身份必须与配置文件中的身份匹配。
当应用程序启动时,iOS 可能会检查代码设计是否与配置文件匹配,以及配置文件是否有效。
当配置文件是 development/ad-hoc 时,它还会检查设备是否具有启动应用程序的权限。
此外,当应用程序提交给 ITC(用于 AppStore 或 TestFlight)时,Apple 会使用其证书/ key 对其进行签名和加密。
关于iOS 代码签名,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/40981694/
|