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

Posted

技术标签:

【中文标题】Xcode 9.2 中的“警告:无法为签名者构建自签名根的链”警告【英文标题】:"Warning: unable to build chain to self-signed root for signer" warning in Xcode 9.2 【发布时间】:2018-08-01 08:26:22 【问题描述】:

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

App working on simulator but not on iPhone( dyld`__abort_with_payload dyld`_dyld_start)

我的问题似乎与 Apple 开发者论坛上的描述类似: https://forums.developer.apple.com/thread/86161

与此 Stack Overflow 上的描述类似: Xcode ios app development code signing

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

谢谢。我忘记了我最终是如何解决它的,但我认为从问题到提出解决方案之间有很长一段时间,不仅在理论上可行,而且我的计算机和 Xcode 被重新启动了几次。有时,就证书和规定而言,需要重新启动 Xcode 才能使一切都到位。我的证书问题肯定是系统深度的,需要从 Apple 下载证书。 您能否为此@Euros 添加分步说明?【参考方案2】:

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

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

【讨论】:

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

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

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

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

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

这将创建并安装以下证书

【讨论】:

【参考方案4】:

@waaheeda 的回答让我找到了解决这个问题的正确方向。

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

我突然发现this,发现这部分特别有趣:

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

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

【讨论】:

【参考方案5】:

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

要使用您的证书,您的系统钥匙串中必须有中间签名证书。这是由 Xcode 自动安装的。但是,如果您需要重新安装中间签名证书,请单击以下链接: Worldwide Developer Relations Certificate Authority (Expiring 02/07/2023) Worldwide Developer Relations Certificate Authority (Expiring 02/20/2030)

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

【讨论】:

谢谢!无论出于何种原因,Xcode 都没有安装 02/20/2030 证书,这导致签名失败。手动安装 2030 年 2 月 20 日后,它工作了。我确实有 2023 年 2 月 7 日,但看起来您需要最新的证书才能获得全新的证书。 非常感谢,我已经面临这个问题好几天了。我只有这两个证书之一。 @RootFool 这个。我新生成的 Mac App Distribution 和 Mac Installer Distribution 证书确实需要安装新的 2030 Worldwide Developer 证书。此链接帮助我意识到我需要 2030 年证书活动,尽管我有 2023 年证书活动:developer.apple.com/support/wwdr-intermediate-certificate 谢谢谢谢谢谢!!! 3天的痛苦解决了。 这对我有用!我还必须遵循这个提示以确保它已安装到“系统”钥匙串(最初看到错误 -25294)developer.apple.com/forums/thread/675290【参考方案6】:

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

【讨论】:

请为任何链接添加上下文,以便您的答案是独立的,这意味着答案需要在答案本身中。见"Provide context for links"。如果您可以在此处用自己的话回答问题并仅作为参考链接,那将是更可取的。你能补充一些你提到的细节吗? 感谢这个解决方案奏效了!【参考方案7】:

这些都不适合我。我不得不删除派生数据; link,删除所有证书并重新安装它们清理缓存并且必须重新安装 pod 文件。搞砸了几个小时后,我找到了一个合适的解决方案。

【讨论】:

【参考方案8】:

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

2.更改“代码设计”命令 ==>“sudo 代码设计”命令

3.更改登录和系统项信任中的“Apple Worldwide Developer Relations Certificate Authority”证书:“始终信任”==>“使用系统默认值”

在命令行中使用 codesign 命令时为我工作

【讨论】:

这为我解决了!谢谢!【参考方案9】:

在我的情况下,只有在我从系统和登录钥匙串中删除了 2023 年到期的 Apple Worldwide Developer Relations Certification Authority 并导入了另一个有效期至 2030 年的证书后,该错误才得到解决。似乎codesign 选择了不正确的证书两者都存在于钥匙串中。

【讨论】:

为我工作。谢谢!【参考方案10】:

在 Xcode 13.1 上并在尝试归档我的应用程序时收到此错误,尽管它在模拟器上构建良好。我不必对钥匙串中的证书进行任何更改,只需清理构建文件夹对我有用。

    打开“产品”菜单 选择“清理构建文件夹” 构建/归档您的应用

我已经看到其他一些答案提到了他们拥有哪些证书,所以我只想补充一点,我还拥有 2030 年“Apple 全球开发者关系认证机构”证书,旧的证书也在我的钥匙串中,我可能需要在某个时候删除它。

【讨论】:

【参考方案11】:

在您创建证书的机器上

    打开钥匙串 查找“Apple 全球开发者关系证书颁发机构” 查看“Expires”列并检查apple.com/CertificateAuthority,看看哪个具有相同的过期时间
G1 Expiring 02/07/2023 G2 Expiring 05/06/2029 G3 Expiring 02/20/2030

在你的 ci

    将此证书安装到您的系统钥匙串

    一个。通过快车道

    import_certificate(
      certificate_path: "~/Downloads/AppleWWDRCAG3.cer"
    )
    

    b.通过 cli

    sudo security import ~/Downloads/AppleWWDRCAG3.cer \
    -k /Library/Keychains/System.keychain \
    -T /usr/bin/codesign \
    -T /usr/bin/security \
    -T /usr/bin/productbuild
    

【讨论】:

以上是关于Xcode 9.2 中的“警告:无法为签名者构建自签名根的链”警告的主要内容,如果未能解决你的问题,请参考以下文章

使用 xcode 9.2 的情节提要中的不一致错误

Xcode 9.2 和 Swift 4 中的 AppKit 的 IBDesignable 是不是损坏?

如何在 Xcode 9.2 中的应用程序构建中保存登录凭据

无法控制将引用对象拖动到 Xcode 9.2 (9C40b) iOS 项目中的 ViewController

与 IBAction 链接的 UIButton 不能在物理设备上的模拟中工作,也不能在 Xcode 9.2 中的模拟器中工作

Xcode 9.2 Shell 脚本调用错误