Xcode 7 错误: "缺少 iOS 分发签名身份..."

857

我尝试将我的应用上传到iTunes Connect或AppStore,但收到以下错误:

未能找到或生成相应的签名资产

Xcode尝试定位或生成相应的签名资产,但由于以下问题而无法完成。

缺少适用于...的iOS分发签名标识。Xcode可以为您请求一个。

在设置新的开发机器之前,我通过Xcode 7从旧机器导出了开发者帐户。

我该怎么办来解决这个问题?


您还需要拥有分发配置文件和证书以及其密钥,才能生成IPA文件(即使使用开发配置文件也需要这些)。 - Bhumit Mehta
1
随着新的Xcode 7开发者账户导入和导出,配置文件和证书也被导出。在我的情况下,我需要额外转移“苹果全球开发者关系证书颁发机构”证书(请参见下面的答案)。 - Awsed
1
@Awsed,你可以在Apple Documentation找到证书和配置文件的详细过程。这将非常有帮助。 - Dipen Panchasara
11个回答

1953

来自苹果 -

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

如下面的评论所述,过期的证书还需要从登录部分中删除:

对于那些即使按照说明也无法使其工作的人...有两个过期的WWDR证书。其中一个在登录钥匙串中,另一个在系统中。您必须删除这两个证书才能使事情正常工作。


64
我认为这是最好的答案,因为它包括了有关删除过期证书的说明。整个问题太疯狂了。 - Chad Pavliska
12
每两年就会发生这种情况:很多应用程序在Mac上停止工作,直到用户重新启动他们的Mac。当然,他们会责怪你。至少新的证书不会在2023年到期。 - Tibidabo
4
谢谢你,我的朋友!如果它没有起作用:你确定已经添加了新的吗?我不得不重启我的Mac并重新下载它,因为我的Mac不想添加它。(我知道这是因为我没有被要求输入密码...) - Godlike
131
尽管有说明书,但仍无法使其正常工作的人请注意...有两个过期的WWDR证书。其中一个在登录钥匙链中,另一个在系统中。您必须删除这两个证书才能使事情正常运作。 - Aleks N.
3
确保当您进入“钥匙串访问”时,选择“密钥串” > “系统”,并将旧的证书也从那里删除。只有这样做,我的签名标识才全部恢复。 - wowzuzz
显示剩余22条评论

564

今天我也遇到了同样的问题。按照以下步骤解决了我的问题。

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

现在你已经准备好了。


63
“从“系统”选项卡中删除它”这一步骤解决了我的问题。这是正确的答案!!! - EFE
4
我也是!我通过在“系统”选项卡中删除它的步骤来解决了问题。 - Edward Chiang
1
我按照这些步骤,包括从系统中删除它,但每次我打开扩展程序构建器(Safari开发人员),旧的过期证书就会重新出现。有什么想法吗? - a_dreb
3
以上问题已通过遵循以下步骤解决:“如果您的证书在Safari扩展程序构建器中不可用,请将签名系统更新到OS X El Capitan v10.11.4 beta”,该步骤详见以下页面:“证书过期”(https://developer.apple.com/support/certificates/expiration/)。 - a_dreb
想知道证书在哪里找的人可以访问苹果认证 - Jorge Casariego

41

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

事实证明我从未删除已过期的证书。它没有在我的视图中显示,直到我从“钥匙串访问”应用程序中进行选择:

查看->显示过期证书

然后

系统->所有项目

将最终显示那个糟糕的过期证书。删除它后重新尝试使用XCode会获得新的有效证书。

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


显示已过期的证书,然后从系统中删除可解决此问题。 - Jules

33
以下步骤将解决问题,
1:打开钥匙串访问,并从“登录”和“系统”部分中删除“Apple全球开发者关系认证机构”(有效期至2016年2月14日)。如果找不到,请在“视图”菜单中使用“显示过期证书”。

enter image description here

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

enter image description here

检查状态。


2
谢谢!这个“如果找不到,可以在“查看”菜单中使用“显示已过期证书”的功能。”对我帮助很大! - SDW
为什么这个截图里有一个脚趾甲剪? - FlavorScape

21
Apple已做出以下更改,请下载新证书developer.apple.com 更新的证书并按下面的屏幕截图放置。在钥匙串中,按下面的屏幕截图单击系统,然后单击证书。删除过期的证书。然后将从上面链接下载的AppleWWDRCA.cer拖放到该位置。 Apple全球开发者关系中级证书过期 为了保护客户和开发者,我们要求所有第三方应用程序、Apple Wallet的通行证、Safari扩展、Safari推送通知和App Store购买收据都由受信任的证书机构签名。Apple全球开发者关系证书颁发机构会颁发您用于为苹果设备签名软件的证书,这样我们的系统就可以确认您的软件按照预期交付给用户,并且没有被修改。
Apple全球开发者关系认证中级证书即将到期,我们已经发布了一个更新的证书,必须在2016年2月14日开始签署所有新的Apple Wallet通行证、Safari推送包和Safari扩展。
虽然大多数开发者和用户不会受到证书更改的影响,但我们建议所有开发者下载并安装更新的证书到他们的开发系统和服务器上,以作为最佳实践。所有应用程序将继续在iOS、Mac和Apple TV上的App Store上提供。
由于可以使用不同的方法来验证收据和传递远程通知,因此我们建议您测试您的服务,以确保不存在特定于实现的问题。如果收据检查代码对证书做出了错误的假设,您的应用程序可能会遇到收据验证失败的情况。确保您的代码遵循收据验证编程指南,并在2016年2月14日之前解决所有收据验证问题。

enter image description here


12
在搜索一段时间后,我发现仅仅通过Xcode从一个机器导出开发者帐户并再次在新的机器上导入这些帐户是不够的。此外,我还需要将名为“Apple World Wide Developer Relations Certificate Authority”的证书从旧开发机器的钥匙串复制到新机器的钥匙串中。这对我解决了问题。

10
您可以使用此链接安装它:https://developer.apple.com/certificationauthority/AppleWWDRCA.cer 。 - Tong

12

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

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

从登录和系统钥匙串中删除过期证书后,我再次可以进行发布构建。


4

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

"This certificate has an invalid issuer."

然后,

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

这解决了证书问题。

由于旧证书已被撤销,现有的配置文件变得无效。要解决此问题:

  1. 在成员中心打开配置文件。
  2. 通过点击“编辑”打开配置文件详情,从列表中选中证书,然后点击“生成”按钮。
  3. 下载并安装开发和分发配置文件。

希望这可以帮到您。


3

帮了我很大的忙,谢谢!我也遇到了同样的问题,确实与生成的图形和相同的错误信息有关。 - Daan

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接