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

我正试图将一个 Xcode 项目迁移到另一台计算机上。它给我一个警告“警告: 无法为 signer 构建自签名根的链”,当它运行时,它会立即崩溃,类似于这个 Stack Overflow 中所显示的:

应用程序可以在模拟器上工作,但不能在 iPhone 上工作(dyld‘ _ _ abort _ with _ payload dyld‘ _ dyld _ start)

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

并且类似于此 Stack Overflow 中描述的: Xcode ios 应用程序开发代码签名

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

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

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

56227 次浏览

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

我也遇到了同样的问题,我用以下步骤解决了这个问题:

  1. 开放钥匙链访问
  2. 选择“登录”,然后单击“证书”
  3. 双击苹果全球开发者关系证书授权
  4. 展开信任部分,然后在“使用此证书时”旁边,将设置从“ 永远相信”更改为“ 使用系统默认值
  5. 清除生成文件夹并运行

现在回答已经太晚了,但是如果还有人在这个问题上寻找解决方案——

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

在 Xcode 项目中进入签名功能,输入正确的捆绑包标识符,禁用自动签名,选择适当的 profile/import/download profile

然后你会发现信任修复选项如下配置文件,点击它点击信任输入您的登录凭证

这将创建和安装以下证书

enter image description here

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

我有一个钥匙链在我的回购,这是用来签署我的线人。在更新了我的 iOS 企业分销证书和配置文件并相应地更新了密钥链之后,我的 CI 签名停止了工作。代码签名在本地我自己的机器上工作。

我突然发现了 这个,并且发现这部分特别有趣:

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

因此,我发现“苹果全球开发者关系中级证书过期”在我的本地“登录”钥匙链在钥匙链接入,并添加到我的回购钥匙链,它似乎已经修复了现在的签名(希望到2030年) :

enter image description here

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

若要使用证书,必须在系统密钥链中具有中间签名证书。这是由 Xcode 自动安装的。但是,如果需要重新安装中间签名证书,请单击下面的链接: 全球开发者关系证书管理局(到期日期: 02/07/2023) 全球开发者关系证书管理局(到期日期: 02/20/2030)

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

我可以通过从 给你下载一个新的证书并安装它来解决这个问题。 更多细节请看 https://developer.apple.com/de/support/expiration/

这些都不适合我。我必须 删除派生数据; 链接删除所有证书并重新安装它们清除缓存重新安装吊舱文件。在胡闹了几个小时之后,我找到了一个合适的解决办法。

1. 更改证书信任: “ Always Trust”= = > “ Use System Default”

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

3.更改登录和系统项目信任中的“ Apple Worldwide Developer Relations Authority”证书: “ Always Trust”= = > “ Use System Default”

在命令行中使用协同设计命令的时候为我工作

在我的案例中,错误只是在我从 System 和 login keychain 中删除了2023年到期的 Apple Worldwide Developer Relations Certification Authority并导入了另一个有效期到2030年的证书之后才得到解决。看起来 codesign选择了错误的一个,当两者都出现在钥匙链中时。

在 Xcode 13.1上,并且在尝试归档我的应用程序时收到了这个错误,尽管它在模拟器上构建得很好。我没有改变任何东西,我的证书在钥匙链,只是 清理生成文件夹为我工作。

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

我看到一些其他的答案提到他们有哪些证书,所以我只是补充说,我也有2030年“苹果全球开发者关系认证机构”的证书,旧的还在我的钥匙链中,我可能需要在某个时候删除。

在创建证书的机器中

  1. 打开钥匙链
  2. 查找“苹果全球开发者关系证书授权”
  3. 查看列“过期”并检查 Apple.com/certificateauthority,看看哪一个有相同的过期

在你的线人里

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

    通过快车道

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

    通过 CLI

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

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

在我的例子中,我有一个自动签名的项目,我的 自己的开发人员证书不再受信任,这在 Keychain > login > securities 中很明显。在我自己的证书,我把 永远相信在获取信息弹出窗口。

之后,我必须再次选择“自动管理签名”在签名和能力标签,这给了一个错误,如“修复信任设置”。点击之后,它修复了我的开发 CA 的信任。

此外,当它再次被打破后,我复制了 G3苹果全球开发者关系 CA 从登录密钥链(默认密钥链)到系统密钥链(系统)。

1. 打开 xcode-> Preferences-> Account

2. 选择 appleid 并单击 ManageSecurities

点击 + (添加)并选择 Apple Development

  1. 清除生成文件夹并运行项目