iOS代码签名

时间:2016-12-05 19:17:53

标签: ios encryption cryptography code-signing

我理解RSA密码学背后的数学,但是,我很难将其与Apple的术语和身份验证过程进行协调。我们有以下实体:

  • 我的个人密钥对
  • Apple的密钥对
  • 我的开发证书
  • 我的发行证明书
  • Apple的Apple全球开发者关系证书
  • 我的开发配置资料
  • 我的分发配置资料

以下不同的运行模式:

  • 从App Store运行应用
  • 运行分发用于测试的应用
  • 在开发环境/调试中运行应用程序

所有这些如何协同工作以实现目标?通过“共同努力”,我明确指出了什么,什么时候以及在哪里。

我当前的刺伤是:

  1. 我生成公钥/私钥
  2. 我从Apple发出证书请求:我发送了他的公钥,以及一些关于我的信息,并使用我的私钥对其进行签名。 Apple然后使用一些加密哈希来验证信息,并且我确实拥有该公钥。 Apple然后检查我的信息与注册的Apple开发人员,如果一切都检查出来,发出证书(包括我的公钥),并使用他们的私钥签署整个事情。可以将Apple签署的不同证书用于不同目的。
  3. 我将此证书包含在我想要运行我的代码的任何配置文件中(或者作为ipa的一部分,或者其他)
  4. 当我尝试在设备上运行应用程序时,设备意识到它没有被Apple直接签名,它会查看我在其上安装的配置文件
  5. 如果App ID签出,并且它是列出的已注册设备之一,则会查看证书
  6. 使用Apple的公钥检查证书的签名,以验证证书是否由Apple签署,从而设备可以信任证书的真实性
  7. 然后使用我在证书中包含的公钥检查代码签名的应用程序,如果匹配,那么它就知道一个受信任的开发人员代码签署该应用程序
  8. 现在可以运行应用
  9. 我对Apple的全球证书不知所措?

1 个答案:

答案 0 :(得分:0)

通过开发人员门户创建的配置文件由Apple签署。 您的配置文件包含您的证书,因此ipa的编码标识必须与配置文件中的编码一致。 启动应用程序时,iOS可能会检查codesign是否与配置文件匹配,以及配置文件是否有效。 当配置文件是开发/临时时,它还会检查设备是否具有启动应用程序的权限。 此外,当应用程序提交给ITC(用于AppStore或TestFlight)时,Apple会使用其证书/密钥对其进行签名和加密。