iOS证书和预配文件的关系

3
是的,又是这类问题。我知道大概情况,每个证书的作用和如何生成等等。
但有一些事情让我困扰。基本上,证书和配置文件之间的关系是什么?我一直找不到一个合适的答案。我问这个问题的原因是因为我一直认为,当我们创建配置文件时,我们与开发(用于开发配置)或分发(用于adhoc和appstore配置)证书相匹配,这意味着配置文件与证书绑定。
但最近,在使用Flash Builder编译我的Flex应用程序时,我注意到实际上并非如此,要么是我没有理解其中的某些东西。基本上,我发现我可以选择我的开发证书,并使用adhoc配置文件,而应用程序编译得很好,运行得很好。我一直认为我不能这样做,因为我只能使用分发证书进行adhoc配置。如果adhoc配置与分发证书绑定,那么怎么可能呢?我不认为这是Flash Builder相关的问题,因为最终我还是通过iTunes在iOS设备上安装应用程序,并且它仍然可以正常运行,所以这必须是苹果公司的问题。
实际上,似乎只要我不为AppStore进行分发,我可以选择任何证书/配置文件组合,应用程序仍然可以在设备上编译和运行,只要appid和udids正确。显然adhoc和appstore配置已禁用了进程附件(调试),并针对推送等使用不同的服务服务器,但除此之外,一切都很好。那么为什么iOS Provisioning Portal中有这个可见匹配,某些配置文件属于某个证书?
这是否意味着证书只是为了分离关注点(开发人员与公司/分销商)而存在?在iOS Provisioning Portal中,只有团队代理可以创建分发证书和adhoc配置文件,但一旦生成,代理似乎可以将adhoc配置文件交给开发人员,并使用他的开发证书签名。
我在正确地链接所有内容并使其有意义方面遇到了问题。网络大佬,请帮忙!

这是否与我的开发和分发证书都使用相同的私钥创建有关?即使如此,这仍然很奇怪,因为私钥将成为主要因素,而不是证书... - rattkin
1个回答

5
很难用几个词回答你的问题,因为这是一个非常复杂的问题,涉及到代码签名的多个方面(看起来你可能还有缓存问题)。但是你的问题可以归结为两个问题:
  1. 证书/配置文件/密钥在创建IPA文件时扮演什么角色?
  2. 设备在执行IPA时如何验证它?
假设你正在使用Xcode,并且拥有企业级Apple开发者帐户,从“钥匙串”实用程序开始创建CSR。在执行CSR创建时,会创建两个密钥(私钥和公钥),并将它们添加到您计算机的钥匙串中。生成并保存在本地计算机上的CSR以加密形式包含您提供的所有信息(包括您的公钥)-使用您的私钥进行加密。

{您的姓名+您的电子邮件+您的公钥} => 使用您的私钥进行加密 => CSR

现在,当您向Apple发送编码的CSR和未加密版本的公钥副本时,他们可以确定您的身份,并确保CSR是由您发送的,因为只有您拥有私钥才能对信息进行编码,而他们只能使用您的公钥成功解码。
如果CSR验证成功,Apple将采用您的CSR并创建开发人员证书,并允许您下载它。这基本上是一个经过苹果认证的“公证”证书,证明您是经过验证的开发人员。把它当作使用Apple的私钥签名的文件,您可以使用Apple的公钥对其进行解码。此时,您的身份和Apple的身份已经得到了验证。
接下来,创建配置文件时,您必须选择所需的成分-udids、dev证书等。

(UDIDS + Dev Certificates + App Identifier + Entitlements) => 配置文件

接下来,您下载此配置文件并将其添加到Xcode中(使用Xcode组织器)。好了!现在,您拥有创建签名IPA文件的所有成分(密钥、配置文件、证书),Xcode会进行验证/后台检查。 Xcode验证方法是检查嵌入在所选移动配置文件中的每个单独的开发人员证书。它会检查您的钥匙串中是否具有每个嵌入式开发人员证书(在配置文件内)。然后,它允许您使用任何包含匹配密钥的dev证书执行签名过程-i.e dev证书,在您的钥匙串中具有相应的密钥。现在,您拥有一个签名的IPA。希望这能够解释IPA创建过程中的事物如何相互关联。这些在签名IPA执行时如何相互关联是故事的第二部分 :)

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