gpt4 book ai didi

xcode4.5 - 什么是代码签名身份?

转载 作者:行者123 更新时间:2023-12-03 05:51:16 24 4
gpt4 key购买 nike

XCode 中的“代码签名身份”是什么?

他们是证书吗?

他们是私钥吗?

它们是应用程序 ID 吗?

它们是配置文件吗?

如果我转到目标build设置,它会要求提供代码签名身份,因此我需要弄清楚这一点。

我以为我们使用我们的私钥签署了代码。然而,我的私钥名称都没有出现。它显示了证书列表(我认为,尽管我什至不确定。)

最佳答案

您肯定遇到了一个非常快速深入的主题,并且在尝试制作 iOS 应用程序的设备构建时,这是一个常见的令人头疼的问题。首先,让我围绕代码签名过程中涉及的每个术语(对您和稍后遇到此问题的任何人)进行一些结构化,然后我们可以转向您的主要问题:
CodeSign 术语
iOS 设备构建的代码签名阶段是我们对应用程序中的特定数据排列进行加密签名和保护的过程,包括应用程序可执行二进制文件本身、任何嵌入式媒体 Assets (如按钮纹理、自定义图稿、字体等)。 ),以及一组关于我们应用程序的元数据,代表我们应用程序数据的唯一“指纹”。 Apple 和 iOS 使用此指纹来帮助确保我们的应用程序在交付给用户的设备或在用户的 iOS 设备上运行时不会被篡改。为了使这成为可能,开发人员需要向 Apple 注册、设置应用程序标识符、请求开发和分发证书、注册一组测试设备,最后为他们的开发工作请求配置文件。每个元素的作用如下:

  • App Identifier (or AppID) - 一个反向 DNS 样式的字符串,它在 AppStore 上唯一标识一个 iOS 应用程序。
  • 开发和分发证书 - 这些是由 Apple 加密签名的数字文件,用于证明文件发给的个人的身份。对于熟悉公钥基础设施的人来说,证书本身包含一个公钥,可用于在流程后期验证签名的完整性。
  • 测试设备 - iOS 软件唯一批准的标准分发 channel 是通过 AppStore。通过注册测试设备,开发者可以绕过AppStore,直接将软件安装到设备上进行开发和测试。给定成员(member)年允许的测试设备总数为 100 台测试设备。
  • Provisioning Profile - 包含三个主要组件的文档:1) 正好一个 App ID,2) 一个或多个 iOS 开发者证书,以及 3) 可在零个或多个直接注册的测试设备上安装的 iOS 应用程序本文档的内容由 Apple 加密签名,以确保其内容不会被篡改。

  • 正是此文件和指纹检查确定是否可以将开发人员生成的应用程序安装到设备,因为它包含“谁”(证书)、“内容”(AppID)和“在哪里”的概念'(哪些设备)。
    太好了,我明白了......现在这个代码标志身份怎么样?
    在单个构建目标的build设置的上下文中,术语 代码签名标识 指的是安装在开发人员机器钥匙串(keychain)中的那些证书的通用名称。在 Xcode build设置中,它显示为一个选项列表,开发人员必须从中选择用于 CodeSign 的身份——在此菜单的每个部分中编码了很多 信息:
    Xcode Code Sign Identity
    首先查看黑色文本 - 从上图中的“iPhone 开发人员:Bryan Musial (XXXXXXXXXX)” - 这实际上是 Xcode 用来查找用于代码签名的公钥和私钥的主要项目。选择此项时,您是在指示 Xcode 进入您的钥匙串(keychain)并尝试查找其“通用名称”字段与该字符串匹配的证书,然后获取该证书(其中包含公钥)和关联的私钥以用于代码签名操作。
    如果您打开 Keychain Access 并双击任何“iPhone 开发:...”或“iPhone 分发:...”证书,则会显示所有编码到 Apple 向其开发人员颁发的证书中的信息。如果我要选择第一张图片中的条目,Xcode 将进入我的钥匙串(keychain)并拉回此证书(注意:唯一标识详细信息已被 X'd 或更改):
    Keychain Certificate Common Name Example
    如您所见,Xcode 选择中的黑色文本与我的证书中的 Common Name 字段完全匹配,因此 Xcode 会撤回此证书及其链接的私钥,以用于代码签名我的应用程序。
    再次回顾 Xcode 设置,我们还注意到该菜单选项中还有更多文本——浅灰色文本标识将内置到应用程序中的 Provisioning Profile。在我的示例设置中,Xcode 将获取 Provisioning Profile“MyiOSApp Testing”,其 AppID 设置为“com.myiosapp.*”。 Xcode 非常喜欢隐藏 Provisioning Profiles,幸运的是,Organizer 为您提供了一个查看已安装的 Provisioning Profiles 并了解它们包含的基本数据的好地方。再次对于第一张图像中的 Xcode 代码签名标识,我的管理器中的相关配置文件如下所示:
    Organizer Provisioning Profile
    'Name' 列和 App Identifier 列的尾端与我的 Xcode 设置中的浅灰色文本相匹配,因此这是在代码签名期间选择使用的配置文件。注意行尾的“状态”列也很重要。在这种情况下,它是绿色的并指示“有效配置文件”。这意味着我的钥匙串(keychain)至少具有该供应配置文件中编码的证书之一的公钥和私钥。如果此状态不是绿色,则说明您当前设置的公钥/私钥和/或配置文件存在问题——除非您尝试使用的配置文件将其状态设置为绿色,否则代码签名无法工作.其他可能的状态选项包括:
    Organizer Provisioning Status Options
  • 未找到有效签名身份: 您没有此配置文件中编码的至少一个证书的公钥和私钥。从管理器中删除配置文件,然后返回到 developer.apple.com/ios 上的证书、标识符和配置文件工具,并确保您的开发证书包含在配置文件中。验证您在 Keychain Access 中的证书未过期或撤销,并且具有链接到公钥证书的私钥。
  • 配置文件已过期: 配置文件的过期日期已过。从 Organizer 中删除此 Provisioning Profile,然后重新访问 developer.apple.com/ios 上的 Certificates, Identifiers & Profiles 工具并重新发布此 Provisioning Profile(如果确实仍然需要)

  • 其他可能绊倒你的物品
    除了确保您安装了公钥和私钥以及配置文件设置得恰到好处的所有细微差别之外,还有一些其他事情可能会让开发人员感到困惑。首先,Xcode 收集 Provisioning Profiles 并保留它们,直到您告诉它删除它们。从理论上讲,这不是什么大问题,除非您更改配置文件、下载并安装更新版本的情况。很多时候 Xcode 会获取正确的配置文件,但有时它不会正确获取,您将花费数小时查看证书、标识符和配置文件工具以及您的钥匙串(keychain),以尝试了解正在发生的事情。
    建议 1: 安装较新版本的配置文件时,请删除旧版本,以免 Xcode 处于可能必须做出决定的位置。
    如果您重新颁发开发或分发证书,可能会发生类似的事情——大多数情况下,Xcode 会在构建期间触发关于不明确证书的警告。
    建议2: 构建时注意歧义警告。这意味着您有一个符合构建标准的旧证书,并且可能会被无意中使用,从而可能导致构建问题。
    建议 3: 任何时候您在钥匙串(keychain)中处理您的证书时,请查找带有红色“X”的“iPhone 开发人员:...”或“iPhone 分发:...”证书。这是证书已过期或已被吊销的指示符。无论哪种方式,此公钥(以及可能链接的私钥)都不再用于构建目的,并且可以删除。
    最后,代码签名标识设置还有一个列为“自动配置文件选择器”的选项。在许多情况下,您会希望使用此选项,因为它会尽力从构建目标的设置中自动查找您的 AppID,查找与该 AppId 匹配的配置文件并包含您拥有公钥和私钥的证书.在某些自定义构建情况下,可能无法使用此选项,您必须使用固定的特定选项之一,例如我在第一张图像中的演示设置。如果您使用固定选项,请注意 - 每次更新配置文件时,您还需要更新代码签名身份build设置以匹配较新版本。
    关键要点
  • 确保您的 Keychain 和 Xcode Provisioning Profile 列表保持干净且已删除重复数据。
  • 安装证书和配置文件后,确保组织者将该配置文件的状态报告为绿色(“有效配置文件”)。任何其他状态都表明您的钥匙串(keychain)和配置文件之间存在问题,您甚至需要在考虑运行构建之前解决该问题。
  • 尝试使用“自动配置文件选择器”。如果您的队友和任何自动构建系统也不必考虑 Code Sign Identity 设置,他们会对您更满意。
  • 如果您无法使用自动配置文件选择器,请确保在进行配置文件的更新迭代时始终保持该设置为最新。

  • 祝您的构建配置好运,如果您有任何其他后续问题,请告诉我!

    关于xcode4.5 - 什么是代码签名身份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15996468/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com