Xcode 9.2 中的“警告:无法为签名者构建到自签名根的链”警告

Che*_*kie 33 xcode code-signing certificate root

我正在尝试将 Xcode 项目迁移到另一台计算机。它给了我警告“警告:无法为签名者构建到自签名根的链”,当它运行时,它立即崩溃,类似于此堆栈溢出中显示的内容:

应用程序在模拟器上运行但不在 iPhone 上运行(dyld`__abort_with_payload dyld`_dyld_start)

我的问题似乎与 Apple Developer Forums 上描述的类似:https : //forums.developer.apple.com/thread/86161

并类似于此堆栈溢出中描述的内容: Xcode ios app development code signature

除了删除证书并重新添加证书的建议外,重新添加我的帐户并重新启动似乎没有帮助。我第二次删除了我的开发者证书,现在我看不到它回来了,而且我不知道如何取回它,因为我的开发者门户似乎没有下载它的地方像以前一样。

我也多次尝试删除派生数据文件夹。

e:我已经确定这台计算机上的任何项目都会导致相同的崩溃和警告。

小智 42

如果其他解决方案都不起作用,请尝试将中间签名证书添加到您的系统钥匙串中。我在尝试手动创建配置文件/证书时发现了这一点,因为没有其他任何工作 - 从 Apple Developer 平台上的新配置文件过程的创建新证书步骤:

要使用您的证书,您的系统钥匙串中必须有中间签名证书。这是由 Xcode 自动安装的。但是,如果您需要重新安装中间签名证书,请单击以下链接: 全球开发者关系证书颁发机构(02/07/2023 到期) 全球开发者关系证书颁发机构(02/20/2030 到期)

下载这两个文件并双击它们自动添加到系统钥匙串后,xcode中的自动配置文件开始工作(我不需要完成手动配置文件的过程,但我在那里找到了链接)

  • 谢谢你!无论出于何种原因,Xcode 没有安装 02/20/2030 证书,导致签名失败。2030 年 2 月 20 日手动安装后,它起作用了。我确实拥有 2023 年 2 月 7 日的证书,但看来您需要最新的证书才能获得全新证书。 (4认同)

Tim*_*nin 24

就我而言,只有在我Apple Worldwide Developer Relations Certification Authority从系统和登录钥匙串中删除了将于 2023 年到期的证书并导入了有效期至 2030 年的其他证书后,该codesign错误才得以解决。当钥匙串中同时存在这两个证书时,似乎选择了错误的证书。


kes*_*hav 13

我遇到了同样的问题并通过以下步骤修复:

  1. 打开钥匙串访问
  2. 选择登录,然后单击证书
  3. 双击 Apple Worldwide Developer Relations 证书颁发机构
  4. 打开信任部分,并从“始终信任”中设置为“使用系统默认值”
  5. 清理构建文件夹并运行

  • 谢谢。对我来说,它被设置为“使用系统默认值”。所以我将其更改为“始终”,关闭XCode,再次将其设置为“使用系统默认值”。这些步骤解决了问题。 (23认同)
  • 3a) 寻找苹果证书上的小蓝色加号;4)打开信任部分,从 **“始终信任”** -> **“使用系统默认值”** *(“从 A 设置到 B”在我的大脑中是更清晰的措辞)* (5认同)
  • @MarjanBasiri 评论为我解决了,因为该选项已经是“使用系统默认值” (2认同)

小智 6

我已经面临同样的问题好几天了。最后,我通过从 Key Chain Access 更改我的根 CA 来解决它。在系统/登录密钥链中查看。哪个证书颁发机构被用作您的个人配置文件的证书的签名者。输入有效的 CA 证书,一切顺利!希望能帮助到你。再见!

  • 谢谢你。我忘记了我最终是如何解决它的,但我认为在问题出现和提出不仅在理论上可行而且我的计算机和 Xcode 重新启动几次的解决方案之间有很长一段时间。有时,就证书和规定而言,需要重新启动 Xcode 才能使一切正常。我的证书问题肯定是系统深度的,需要从 Apple 下载证书。 (3认同)

kuh*_*uhr 6

@waaheeda 的回答引导我朝着正确的方向解决这个问题。

我的仓库中有一个钥匙串,用于在我的 CI 上签名。更新我的 iOS 企业分发证书和配置文件并相应地更新钥匙串后,我的 CI 签名停止工作。代码签名在我自己的机器上本地工作。

我突然偶然发现了这一点,发现这部分特别有趣:

2020 年 9 月 2 日之后生成的企业 iOS 分发证书需要在任何将进行代码签名的计算机上安装新的中间证书。

因此,我在 Keychain Access 的本地“登录”钥匙串中找到了“Apple Worldwide Developer Relations Intermediate Certificate Expiration”,并将其添加到我的存储库中的钥匙串中,它现在似乎已经修复了签名(希望直到 2030 年):

在此处输入图片说明


per*_*000 6

我可以通过从这里下载新证书并安装来解决这个问题。查看https://developer.apple.com/de/support/expiration/ 了解更多详情。

  • 请为任何链接添加上下文,以便您的答案是独立的,这意味着答案需要位于答案本身中。请参阅[“为链接提供上下文”](https://stackoverflow.com/help/how-to-answer)。如果您能在这里用自己的话回答问题并仅作为参考链接,那就更好了。您可以添加一些您提到的详细信息吗? (2认同)

Waa*_*eda 5

现在回答已经太晚了,但是如果有人仍在这个线程上寻找解决方案-

如果您是第一次安装证书或安装在另一台计算机上创建的证书,则会发生这种情况

在您的 Xcode 项目中,转到签名功能,输入正确的包标识符,禁用自动签名,选择适当的配置文件/导入/下载配置文件

然后您会在个人资料下方找到信任修复选项,点击它点击信任输入您的登录凭据

这将创建并安装以下证书

在此输入图像描述


Pri*_*kin 5

1.更改证书信任:“始终信任”==>“使用系统默认值”

2.更改“codesign”命令==>“sudo codesign”命令

3.更改登录和系统项信任中的“Apple全球开发者关系证书颁发机构”证书:“始终信任”==>“使用系统默认值”

在命令行中使用 codesign 命令时对我有用