【问题标题】:"Warning: unable to build chain to self-signed root for signer" warning in Xcode 9.2Xcode 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:我已经确定这台计算机上的任何项目都会导致相同的崩溃和警告。

【问题讨论】:

    标签: xcode certificate root code-signing


    【解决方案1】:

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

    【讨论】:

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

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

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

    【讨论】:

    • 完美。它对我有用。
    • 谢谢。对我来说,它被设置为“使用系统默认值”。所以我将其更改为“始终”,关闭 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 上并在尝试归档我的应用程序时收到此错误,尽管它在模拟器上构建良好。我不必对钥匙串中的证书进行任何更改,只需清理构建文件夹对我有用。

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

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

          【讨论】:

            【解决方案11】:

            在您创建证书的机器上

            1. 打开钥匙串
            2. 查找“Apple 全球开发者关系证书颁发机构”
            3. 查看“Expires”列并检查apple.com/CertificateAuthority,看看哪个具有相同的过期时间

            在你的 ci

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

              一个。通过快车道

              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
              

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-05-31
              • 2021-03-30
              • 1970-01-01
              • 2021-07-23
              • 1970-01-01
              相关资源
              最近更新 更多