首先,在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文件;你会学到很多!
一个[辉煌的教程](http://escoz.com/blog/demystifying-ios-certificates-and-provisioning-files/)在您的业余时间阅读.. – Krishnabhadra 2013-03-06 03:55:35
所以你是在你的业余时间,对? – Krishnabhadra 2013-03-06 04:21:37
不错的教程:) – z22 2013-09-25 07:02:54