Xcode 7 错误:“缺少... 的 iOS 发行版签名身份”

我试图将我的应用程序上载到 iTunes Connect。 AppStore 并出现以下错误:

找不到或生成匹配的签名资产

Xcode 试图找到或生成匹配的签名资产,但由于以下问题而未能这样做。

Xcode 可以为您请求一个缺少的 iOS 发行版签名。

在安装新的开发计算机之前,请通过 Xcode 7 将开发人员帐户从旧的导出到新的计算机。

我该怎么做才能解决此问题?

答案

从苹果 -

感谢您引起社区注意,并为您遇到的问题深表歉意。此问题源于在系统和登录钥匙串中都拥有已过期的 WWDR 中级证书的副本。要解决此问题,您应该首先下载并安装新的WWDR 中间证书 (通过双击文件)。接下来,在 “钥匙串访问” 应用程序中,选择 “系统” 钥匙串。确保在 “查看” 菜单中选择 “显示过期的证书”,然后删除 “Apple 全球开发者关系证书颁发机构中间证书” 的过期版本(于 2016 年 2 月 14 日过期)。您的证书现在应该在 “钥匙串访问” 中显示为有效,并且 Xcode 可以使用它们来提交到 App Store。

如以下评论中所述,过期的证书也需要从login部分中删除:

即使有说明,也无法使它正常工作... 有两个过期的 WWDR 证书。一个在登录钥匙串中,另一个在系统中。您必须将它们都删除,才能使工作正常

我今天也面临着同样的问题。以下步骤解决了我的问题。

  1. 下载https://developer.apple.com/certificationauthority/AppleWWDRCA.cer
  2. 双击安装到钥匙串。
  3. 然后在 “钥匙串” 中,在 “钥匙串” 应用程序中选择 “视图”->“显示过期的证书”。
  4. 它将列出所有过期的证书。
  5. 从 “登录” 选项卡中删除 “Apple 全球开发者关系证书颁发机构证书”
  6. 并从 “系统” 选项卡中将其删除。

现在您准备好了。

我一直遇到这个问题,发现我所有的证书都无效了 - 哦不!

事实证明,我从未删除过期的证书。在我从 “钥匙串访问” 应用程序中选择之前,它没有显示出来:

查看 -> 显示过期的证书

然后

系统 -> 所有项目

最终将显示过期证书。删除它,然后从 XCode 重试,将获取新的有效证书。

只要确保您在 “钥匙串访问” 应用程序中搜索 “所有项目” 即可。无效的证书是指向尚未删除的过期证书的结果。

以下过程将解决问题,

1:打开 KeyChain 访问,然后从 “登录” 和 “系统” 部分中删除 “Apple 全球开发者关系证书颁发机构”(将于 2016 年 2 月 14 日到期)。如果找不到,请使用“查看” 菜单中的“显示过期的证书”。

在此处输入图片说明

2:现在下载https://developer.apple.com/certificationauthority/AppleWWDRCA.cer并双击该证书以将其添加到 “钥匙串访问”>“证书” 中(该证书将于 2023 年 2 月 8 日到期)。现在,证书的有效状态应变为绿色,如下所示。

在此处输入图片说明

一旦检查状态。

苹果进行了以下更改,因此请下载新证书developer.apple.com

更新证书并按以下屏幕截图所示将其放置。在如下所示的钥匙串中,单击系统,然后单击证书。删除过期的证书。然后拖放从上面的链接下载的 AppleWWDRCA.cer

苹果全球开发者关系中级证书到期

为了帮助保护客户和开发人员,我们要求所有第三方应用程序,Apple Wallet 的通行证,Safari 扩展,Safari 推送通知和 App Store 购买收据均由受信任的证书颁发机构签名。苹果全球开发者关系证书颁发机构颁发您用于对 Apple 设备进行软件签名的证书,从而使我们的系统能够确认您的软件已按预期交付给用户,并且未经修改。

自 2016 年 2 月 14 日起,Apple 全球开发人员关系认证中间证书即将过期,并且我们签署了所有新的 Apple Wallet Pass,Safari Push Notifications 的推包和 Safari Extensions 时,必须包括更新的证书。

虽然大多数开发人员和用户都不会受到证书更改的影响,但我们建议所有开发人员将更新的证书下载并安装在其开发系统和服务器上,这是最佳做法。所有应用程序仍将在 iOS,Mac 和 Apple TV 的 App Store 上可用。

由于可以使用不同的方法来验证收据和传递远程通知,因此我们建议您测试服务以确保不存在特定于实现的问题。如果收据检查代码对证书的假设不正确,则您的应用可能会遇到收据验证失败的情况。确保您的代码遵守《收据验证编程指南》,并在 2016 年 2 月 14 日之前解决所有收据验证问题。

在此处输入图片说明

搜索了一段时间后,我发现仅从 Xcode 导出开发者帐户并再次通过 Xcode 将其导入新机器上是不够的。

另外,我需要将名为 “ Apple World Wide Developer Relations 证书颁发机构 ” 的证书从以前的开发机器的钥匙串复制到新的机器上。

这为我解决了问题。

我导入了新的 Apple WWDR 证书,该证书将在 2023 年到期,但是我仍然遇到问题,我的开发人员证书显示了无效的颁发者错误。

在钥匙串访问中,转到查看 -> 显示过期证书,然后在您的登录钥匙串中突出显示过期的 WWDR 证书并将其删除。我的系统钥匙串中也有相同的过期证书,因此我也从那里删除了它。(重要)

从登录和系统钥匙串中删除过期的证书后,我能够再次构建发行版。

我删除了旧的 AppleWWDRCA,下载并安装了AppleWWDRCA ,但问题仍然存在。我还从 Keychain Access 检查了我的发行和开发证书,并看到以下错误;

"This certificate has an invalid issuer."

然后,

  1. 我撤销了会员中心的开发和发行证书。
  2. 重新创建了 CSR 文件,并从零开始添加了开发和发行证书,下载并安装了它们。

此固定证书问题。

由于旧证书被吊销,因此现有的配置文件无效。解决这个问题;

  1. 在成员中心上,打开供应配置文件。
  2. 通过单击 “编辑” 打开配置文件详细信息,从列表中检查证书,然后单击 “生成” 按钮。
  3. 下载并安装了开发和发行配置文件。

我希望这有帮助。

我的回答是不同的,并伴随着消息:

resource fork, Finder information, or similar detritus not allowed

解决方案是处理生成的图形:

macOS Sierra Xcode 8 中的代码签名错误:不允许资源派生,Finder 信息或类似碎屑

别忘了还要为您的Apple Developer Account安装 iOS 证书。