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,看看哪个具有相同的过期时间
在你的 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 和 Swift 4 中的 AppKit 的 IBDesignable 是不是损坏?
无法控制将引用对象拖动到 Xcode 9.2 (9C40b) iOS 项目中的 ViewController
与 IBAction 链接的 UIButton 不能在物理设备上的模拟中工作,也不能在 Xcode 9.2 中的模拟器中工作