2013-03-06 129 views
27

我对供应配置文件,证书是否正确(开发期间)有所了解?了解iOS中的配给配置文件和证书

  1. 在设备上安装时,应用程序是否使用来自xcode的开发人员证书进行签名?证书应存在于供应配置文件中(存储在IPad/IPhone中),并且安装设备的deviceid也应存在于供应配置文件中。
  2. 因此,当设备未连接到开发人员mac时单击某个应用程序时,应用程序的签名证书应与配置配置文件(设备上存在)中的一个匹配,且设备ID也应与配置中的一个匹配配置文件,只有当应用程序会运行。
  3. 当设备连接到运行xcode的mac并且您想调试时,存储在钥匙串中的公钥+私钥进入游戏,xcode使用证书尝试解锁存储在钥匙串中的公钥+私钥,因此标识了mac,并且还执行了上面的项目符号,如果这也是真的,那么您可以成功调试
+19

一个[辉煌的教程](http://escoz.com/blog/demystifying-ios-certificates-and-provisioning-files/)在您的业余时间阅读.. – Krishnabhadra 2013-03-06 03:55:35

+3

所以你是在你的业余时间,对? – Krishnabhadra 2013-03-06 04:21:37

+0

不错的教程:) – z22 2013-09-25 07:02:54

回答

21

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

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

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

如果不是,它会检查已安装的设置配置文件。这些配置文件包括: 1.开发人员证书列表 2.应用程序ID 3.授予权限(例如iCloud,Game Center等) 4.设备UDID列表 5.整个事情结束并由Apple签署。

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

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

+0

其中.mobileprovision文件位于何处?我无法在我的Xcode项目目录中找到它。 – almel 2014-07-24 02:15:39

+0

您可以从配置文件下的Member Center下载它们。 – russbishop 2014-10-07 18:04:29

+1

在您的系统中,当您安装配置文件时,它将出现在〜/ Library/MobileDevice/Provisioning Profiles – Raghav 2014-10-30 06:19:55