代码之家  ›  专栏  ›  技术社区  ›  Chewie The Chorkie

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

  •  61
  • Chewie The Chorkie  · 技术社区  · 6 年前

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

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

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

    与此堆栈溢出上的描述类似: Xcode ios app development code signing

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

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

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

    12 回复  |  直到 6 年前
        1
  •  87
  •   Paul Hristea    3 年前

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

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

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

        2
  •  40
  •   Keshav    4 年前

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

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

    在我的情况下,只有在删除后,错误才得以解决 Apple Worldwide Developer Relations Certification Authority 该证书将于2023年从系统和登录密钥链中到期,并导入另一个有效期至2030年的证书。看来 codesign 在钥匙链中都存在时,选择了错误的钥匙。

        4
  •  11
  •   persec10000    3 年前

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

        5
  •  7
  •   Euros    6 年前

    我已经面临同样的问题好几天了。最后,我通过将我的根CA从密钥链访问更改为密钥链访问来解决这个问题。 在系统/登录密钥链中查看。哪个证书颁发机构正被用作个人设置配置文件证书的签名者。输入有效的CA证书,您就可以开始了! 希望有帮助。 再见!

        6
  •  7
  •   kuhr    3 年前

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

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

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

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

    因此,我在keychain Access中的本地“login”密钥链中找到了“Apple Worldwide Developer Relations Intermediate Certificate Expiration”,并将其添加到我的repo中的密钥链中,现在似乎已经解决了签名问题(希望到2030年):

    enter image description here

        7
  •  4
  •   Waaheeda    3 年前

    现在回答这个问题已经太迟了,但是如果有人仍然在寻找这个问题的解决方案--

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

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

    然后您将在配置文件下找到信任修复选项,点击它点击信任输入您的登录凭据

    这将创建并安装以下证书

    enter image description here

        8
  •  3
  •   Princekin    3 年前

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

    2.更改“协同设计”命令==>“sudo codesign”命令

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

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

        9
  •  1
  •   Wimukthi Rajapaksha    3 年前

    这些都不适合我。我不得不这么做 删除派生数据 ; link , 删除所有证书并重新安装 , 清除缓存 而且不得不 重新安装pod文件 . 在胡闹了几个小时后,我找到了一个合适的解决办法。

        10
  •  1
  •   Dwigt    2 年前

    在Xcode 13.1上,并在尝试存档我的应用程序时收到此错误,尽管它在模拟器上构建得很好。我不必对密钥链中的证书进行任何更改,只需 正在清理生成文件夹 为我工作。

    1. 打开产品菜单
    2. 选择清理生成文件夹
    3. 构建/存档你的应用程序

    我看到一些其他答案引用了他们拥有的证书,所以我只想补充一下,我还有2030年的苹果全球开发者关系证书颁发机构证书,旧的证书也仍然在我的钥匙链中,我可能需要在某个时候删除。

        11
  •  1
  •   Ted sabadow    2 年前

    在创建证书的计算机中

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

    在您的ci中

    1. 将此证书安装到系统密钥链

      a、 通过fastlane

      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
      
        12
  •  0
  •   matthewv789    2 年前

    除了其他答案之外,请确保如果您被授权为root用户,请在尝试进行代码设计之前退出,以便您作为登录用户进行签名。当我忘记我是以root身份运行时,我的代码设计失败了。