XCode中的“代码签名身份”是什么?
他们是证书吗?
它们是私钥吗?
他们是app app吗?
他们是配置文件吗?
如果我转到目标构建设置,它会询问代码签名身份,所以我需要弄明白这一点。
我以为我们使用私钥签署了代码。但是,我的私人密钥名称都没有显示出来。它显示了证书列表(我想,虽然我甚至不确定。)
答案 0 :(得分:127)
在尝试制作iOS应用程序的设备时,您肯定会遇到一个非常快速的主题,并且是一个令人头疼的常见问题。首先,让我围绕代码签名过程中涉及的每个术语设置一个小结构(对于您和之后遇到此问题的任何人),然后我们可以转向您的主要问题:
CodeSign术语
iOS设备构建的代码签名阶段是我们在应用程序中加密签名和保护特定数据排列的过程,包括应用程序可执行二进制本身,任何嵌入式媒体资产(如按钮纹理,自定义图稿,字体)等等,以及一组关于我们的应用程序的元数据,并代表一个独特的指纹'我们的应用程序数据。此指纹是Apple和iOS使用的指纹,有助于确保我们的应用程序在交付给用户的设备时或在用户的iOS设备上运行时不会被篡改。为此,开发人员需要向Apple注册,设置应用程序标识符,请求开发和分发证书,注册一组测试设备,最后请求供应配置文件以进行开发。每个元素的作用如下:
此文件的存在以及指纹检查确定是否可以将开发人员生成的应用程序安装到设备,因为它包含“谁”的概念。 (证书),'什么' (AppID),以及' Where' (哪些设备)。
很好,我明白了......现在这个Code Sign Identity会怎么样?
在单个构建目标的构建设置的上下文中,术语代码签名标识指的是安装在开发人员的密钥链中的那些证书的公用名称&#39;的机器。在Xcode构建设置中,它显示为一个选项列表,开发人员必须从中选择要用于CodeSign的标识 - 在此菜单的每个部分中编码很多信息:< / p>
首先看看黑色文字 - 来自上面的图片&#39; iPhone开发者:Bryan Musial(XXXXXXXXXX)&#39; - 这实际上是Xcode用于查找用于代码签名的公钥和私钥的主要项目。选择此项目时,您正在指示Xcode进入您的钥匙串,并尝试找到一个名为“公共名称”的证书。字段匹配该字符串,然后获取该证书(包含公钥)和相关的私钥,以便在代码签名操作中使用。
如果您打开Keychain Access并双击iPhone开发中的任何一个,只需要彻底:...&#39;或者&#39; iPhone发行:......&#39;证书显示Apple向其开发人员颁发的证书中编码的所有信息。如果我要在第一张图片中选择条目,Xcode会进入我的钥匙串并取回此证书(注意:唯一识别详细信息已被X&#39; d或更改):
正如您所看到的,Xcode选择中的黑色文本与我的证书中的Common Name字段完全匹配,因此Xcode将撤回此证书及其链接的私钥,以便在代码签名我的应用程序中使用。
再次回顾Xcode设置,我们还注意到该菜单选择中还有更多文本 - 浅灰色文本标识将在应用程序中构建的Provisioning Profile。在我的示例设置的情况下,Xcode将获得配置文件&#34; MyiOSApp Testing&#34;它的AppID设置为&#39; com.myiosapp。*&#39;。 Xcode非常贪婪地使用存储配置文件,幸运的是,管理器为您提供了一个查看已安装的配置文件的好地方,并了解它们包含的基本数据。再次对于第一张图片中的Xcode代码签名身份,我的管理器中的相关配置文件将如下所示:
&#39;姓名&#39;应用标识符列的列和尾端与我的Xcode设置中的浅灰色文本匹配,因此这是在代码签名期间选择使用的配置文件。同样重要的是要注意“状态”和“状态”。行末尾的列。在这种情况下,它是绿色并指示“有效配置文件”。这意味着我的钥匙串具有至少一个在该供应配置文件中编码的证书的公钥和私钥。如果此状态不是绿色,则表示您当前设置公钥/私钥和/或供应配置文件时出现问题 - 除非您尝试使用的供应配置文件的状态设置为绿色,否则代码签名将无法工作。其他可能的状态选项包括:
可以绊倒你的其他物品
除了确保安装了公钥和私钥以及配置文件设置恰到好处的所有细微差别之外,还有一些其他因素可以帮助开发人员。首先,Xcode收集供应配置文件并挂起,直到您告诉它删除它们。从理论上讲,除非您在更改供应配置文件,下载和安装新版本的情况下,这不是一件非常重要的事情。很多时候,Xcode会抓住正确的个人资料,但有时候它并没有做到正确,而且你会花费数小时查看证书,标识符&amp;配置文件工具以及您的钥匙串,以尝试了解正在发生的事情。
建议1:安装较新版本的配置文件时,请删除较旧版本,以便Xcode不会被置于可能需要做出决定的位置。
如果您重新签发开发或分发证书,则会发生类似情况 - 大多数情况下,Xcode会在构建期间触发关于模糊证书的警告。
建议2:在构建过程中注意歧义警告。这意味着您有一个符合构建标准的旧证书,可能会被无意中使用,从而可能导致构建问题。
建议3:只要您在Keychain处理证书,请寻找iPhone开发人员:...&#39;或者&#39; iPhone发行:......&#39;有红色&#39; X&#39;在他们。这表明证书已过期或已被撤销。无论哪种方式,此公钥(以及可能链接的私钥)对于构建目的都没有进一步的用处,可以删除。
最后,代码签名身份设置还有一个选项,列出为&#39;自动配置文件选择器&#39;。在许多情况下,您将需要使用此选项,因为它将尽最大努力从构建目标的设置中自动查找AppID,查找与该AppId匹配的Provisioning Profile并包含您同时拥有的证书和私钥。在某些自定义构建环境中,可能无法使用此选项,您必须使用其中一个固定的特定选项,例如第一张图像中的演示设置。建议您使用固定选项 - 每次更新配置文件时,您还需要更新代码签名身份构建设置以匹配较新版本。
关键要点
您的构建配置祝您好运,如果您有任何其他后续问题,请告诉我们!