了解iOS中的配置文件和证书

时间:2013-03-06 03:08:44

标签: ios ios5 ios6

我对配置文件,证书的理解是否正确(在开发期间)?

  1. 在设备上安装时,应用程序是否使用xcode的开发人员证书进行签名?证书应存在于配置文件中(存储在IPad / IPhone中),安装设备的deviceid也应存在于配置文件中。
  2. 因此,当您在设备未连接到开发者mac时单击应用程序时,应用程序的签名证书应与配置文件中的一个(设备上存在)匹配,并且设备ID也应与设置中的设备ID匹配个人资料,只有这样才能运行。
  3. 当设备连接到运行xcode的mac并且你想要调试时,存储在钥匙串中的公钥+私钥开始起作用,xcode尝试使用证书解锁存储在钥匙串中的公钥+私钥。因此识别mac,并执行上面的子弹,如果这也是真的,那么你可以成功调试

1 个答案:

答案 0 :(得分:23)

首先,在Xcode中选择配置文件具有误导性;在Xcode中构建实际上与配置文件无关!实际发生的事情是Xcode只是将配置文件中的公钥证书与您的钥匙串中的公钥证书匹配,然后使用私钥对可执行文件进行签名。这是沼泽标准的Mach-O可执行签名。这也是为什么他们在Xcode 5中将其更改为更清晰的原因。这也是配置文件中的错误(未找到签名身份)的来源 - 这意味着Xcode无法找到与配置文件中的任何公钥对应的私钥。

您的个人开发者证书是标准的PKI内容;您的Mac以Apple不知道您的私钥的方式向Apple发送证书请求(类似于SSL证书请求)。 Apple生成证书,钥匙串将其与原始请求进行匹配,为您提供证书的公钥和私钥。为单个开发人员创建配置文件时,会列出该开发人员的公钥。创建团队配置文件时,将包含所有选定团队成员的公钥。这允许团队成员签署可执行文件,但签名者的名称将是团队名称而不是个人名称。

当iOS去启动任何可执行文件时,它首先检查签名。如果签名由Apple App Store签名,则运行。

如果没有,则检查已安装的配置文件。配置文件包括: 1.开发人员证书列表 2.应用程序ID 3.授予的权利(例如iCloud,Game Center等) 4.设备UDID列表 整件事由Apple整理并签字。

检查配置文件以确保它是由Apple的密钥签名(使用Apple的公钥)。然后验证当前设备的UDID是否在列表中。它还验证应用程序ID是否匹配(尽管允许使用通配符)。然后,它根据有效的开发人员证书公钥列表检查Mach-O签名。如果它们中的任何一个匹配,则可执行文件运行并被授予列出的权利。如果没有,则被阻止。

我强烈建议在文本编辑器中打开.mobileprovision文件;你会学到很多东西!