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

30

关于开发期间的配置文件和证书,我的理解是否正确?

  1. 应用在安装到设备上时,会使用来自Xcode的开发者证书进行签名?证书应该存在于配置文件中(存储在iPad / iPhone中),并且安装设备的设备ID也应该出现在配置文件中。
  2. 因此,当您在未连接到开发者Mac的设备上单击应用程序时,应用程序签名的证书应与配置文件中的证书匹配(存在于设备上),并且设备ID也应与配置文件中的一个匹配,只有这样应用程序才能运行。
  3. 当设备连接到运行Xcode的Mac上并且您想要进行调试时,就需要使用存储在钥匙串中的公钥和私钥,Xcode尝试使用证书解锁存储在钥匙串中的公钥和私钥,从而识别Mac,并执行上面的步骤,如果也符合要求,则可以成功调试。

19
一篇非常棒的教程,可以在你闲暇时间阅读。链接 - Krishnabhadra
3
所以你现在是在闲暇时间,对吗? - Krishnabhadra
这真的是一个很棒的教程,涵盖了所有的内容。 - Durai Amuthan.H
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Sebastian Boldt
1个回答

26
首先,在Xcode中选择配置文件是具有误导性的;在Xcode中构建与配置文件没有任何关系!实际发生的情况是,Xcode只是将配置文件中的公钥证书与您的Keychain中的证书匹配,然后使用私钥对可执行文件进行签名。这是标准的Mach-O可执行文件签名。这也是为什么在Xcode 5中更改它以使其更清晰的原因。这也是配置文件上的错误(找不到签名身份)来自的地方-这意味着Xcode找不到与配置文件中任何公钥相对应的私钥。
您的个人开发者证书是标准的PKI材料;您的Mac以不让Apple知道您的私钥的方式向Apple发送证书请求(类似于SSL证书请求)。Apple生成证书,并将密钥库与原始请求匹配,为证书提供了公钥和私钥。当为单个开发者创建配置文件时,列出该开发者的公钥。当创建团队配置文件时,则包括所选所有团队成员的公钥。这允许团队成员签署可执行文件,但签署者的名称将是团队名称而不是个人名称。
当iOS启动任何可执行文件时,它首先检查签名。如果签名由苹果应用商店签名,则运行。
如果不是,则检查安装的配置文件。配置文件包括: 1.开发者证书列表 2.应用程序ID 3.授予权限(例如iCloud,Game Center等) 4.设备UDID列表 5.整个内容由苹果公司签名。
该配置文件经过检查以确保它由Apple的密钥签名(使用Apple的公钥)。然后验证当前设备的UDID是否在列表中。它还验证应用程序ID是否匹配(尽管允许通配符)。然后,将Mach-O签名与有效开发者证书公钥列表进行比较。如果有任何匹配项,则可执行文件运行并被授予列出的授权。如果没有,则被阻止。
强烈建议在文本编辑器中打开.mobileprovision文件;您会学到很多!

.mobileprovision文件在哪里?我在Xcode项目目录中找不到它。 - almel
您可以从会员中心的预配文件下面下载它们。 - russbishop
1
在您的系统中,当您安装配置文件时,它将出现在~/Library/MobileDevice/Provisioning Profiles目录下。 - Raghav
1
由于某些原因,我总是很难理解所有这些。我希望有一个漂亮的信息图表,可以将所有内容清晰地呈现出来,这样我就可以把那个图像记在脑海中... - Erik van der Neut
我想知道为什么苹果公司在配置文件标准中添加了到期日期?如果配置文件不过期,那不是更简单吗? - Blazej SLEBODA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接