Xcode 8显示错误,证书不包含签名证书。

283

Xcode 8显示错误,证书不包含签名证书。

这个问题只出现在Xcode-8中,在Xcode 7中,使用同样的配置文件会显示相关的标识证书。


3
您需要进行以下操作之一:a) 使用所需的证书更新您的配置文件;或 b) 安装证书(如果该证书最初未在您的 Mac 上设置,则可能还需要从其他带有私钥的 Mac 迁移证书)。 - pedrouan
4
a) 更新您的配置文件以使用所需的证书。
  • 我已经这样做了,但没有起作用。 b) 安装证书
  • 证书已经安装,并且是在同一台机器上创建的,因此我不需要导出任何密钥之类的东西。 而且正如我所说,在同一台机器上使用Xcode 7没有任何问题。这意味着安装没有任何问题。
- Satish Mavani
请查看这个链接,它很新鲜:https://dev59.com/MFkS5IYBdhLWcg3wp4bO - pedrouan
35个回答

335

有许多方法可以解决此问题,例如启用自动签名等。但是,如果您想了解此错误的原因,您需要查看错误消息。

它说您在“通用标签”中选择的预配文件不包含您在“构建设置”->“代码签名身份”中选择的签名证书。

通常,如果在“构建设置”->“代码签名身份”下为调试身份选择了分发证书,则会发生这种情况。

如果在“签名(调试)”下出现此问题,也可能是预配文件未包括“签名身份”->“iOS 开发”。


89
先生,您是一位经过认证的黑帮成员。 - J.beenie
4
哇!这是实际回答所问的问题。不知道为什么它没有被接受作为答案。谢谢先生! - Junaid Mukhtar
1
每个聪明的开发人员都应该拥有的聪明方式。 - Almas Adilbek
1
这个应该标记为已接受的答案,它解释了问题和解决方案,而不是随机的Xcode生成。 - Andreas777
我仍然收到 error: Provisioning profile "iOS Team Provisioning Profile: my.org.appName" doesn't include signing certificate "Apple Development: Dev Team Name (TEAMID123)". (in target 'My App Target' from project 'MyProject') 的错误信息。该怎么办? - user5306470
显示剩余3条评论

202

检查您的钥匙串是否缺少私钥的身份标识。我安装了多个相同团队的分发证书之一,其中一个缺少了私钥。Xcode 只检查钥匙串中第一个匹配的身份标识,并自动使用该标识,而不是包含私钥的那个。

在这里输入图片描述

删除没有私钥的匹配身份标识可以使 Xcode 再次检测到正确的身份标识。


9
对我来说,它没有解决我的问题。这很可能是由多个根本原因引起的问题之一。 - Ash
3
我所有的证书都有私钥,所以问题的原因肯定不同。 - RAM237
10
我这里的情况是在“登录”钥匙串中有几个具有相同名称但不同日期的证书(即签名身份),但在“系统”钥匙串中只有一个日期正确的证书。删除除了正确证书之外的所有证书就解决了问题。 - RAM237
最有趣的事情是,我在钥匙串访问或Xcode中大约半年没有更改任何内容,所以这种情况突然发生了。另一个有趣的事情是,我的持续集成使用的自动化流程能够正常构建,因此问题只与GUI相关。 - RAM237
5
和@RAM237类似,我有多个同名的证书仍然附带私钥。只保留正确的一个可以解决问题。 - junjie
显示剩余5条评论

91
为了解决这个问题, 我只需在项目设置的常规选项卡中启用“自动管理签名”选项,在启用之前我担心它可能会有某些副作用,但一旦我启用了它,就可以解决我的问题。 输入图像描述

解决了这个问题,但是出现了以下错误:"<unknown>:0: error: Swift 不支持 SDK 'iPhoneSimulator9.3.sdk' Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1" - Mohsin Qureshi
1
你应该尝试重新启动你的模拟器并删除派生数据。 - Satish Mavani
我尝试了,但是没有起作用。它基本上是由于Alamofire引起的。我认为Swift 3与Alamofire 3.0不兼容。 - Mohsin Qureshi
46
最糟糕的想法,让Xcode处理您的证书,您将失去所有配置。懒惰的Xcode会生成新的证书! - Silom
但是在我的项目中,源代码存储在Jenkins服务器上,我不想在其中提供我的帐户凭据,因此只需要手动管理。有没有相应的选项? - sinh99
显示剩余5条评论

82

对于那些由于某种原因需要继续手动操作的人

打开钥匙串访问工具,查看是否存在两个相同的证书。如果有两个或更多,请删除其中一个,就可以解决问题 :)


我需要寻找哪种类型的证书? - user5306470
这对我有效...但为什么?我有来自同一团队的2个AppStore分发配置文件,并且该应用程序具有2个配置,具有2个不同的包标识符和2个不同的分发配置文件。 - iGenio
那对我有效!谢谢!! - undefined

39

我最近将Xcode更新到9.3版本后遇到了这个问题。问题出现在代码签名(debug模式下)证书设置为分发证书而不是开发证书,因此我无法在我的设备上安装该应用程序。

以下是我解决这个问题的步骤:

项目 -> Targets -> 选择你的应用程序 -> Build Settings -> Code Signing Identity -> Debug -> 双击"iPhone Distribution"并将其更改为"iPhone Developer"。


这个问题很简单,但我却为此苦恼了一段时间。谢谢你,亲切的先生。 - JM-AGMS
太好了,它完美地运行了。为什么它不被接受为正确答案呢? - Ioan Moldovan

31

我取消勾选了 "自动管理签名" 选项,然后重新勾选它。这对我有帮助。


弹出了一个对话框,询问我是否要启用自动签名。尽管我点击了取消,但这仍然起作用。 - aepryus
@JamesWierzba 它在常规->签名中。就像 Satish Maven 上面的答案一样。 - Loke
4
最佳答案 - bubibu
此外,只需在不同的配置文件之间切换即可解决问题。您可能还需要根据先前的答案首先清理密钥。 - MindWire
确实!@bubibu 目前是我最喜欢的所有时间里的SO答案。 - WaltersGE1
有时候,最简单的答案是最好的。 - mythicalcoder

27

就自动签名而言,每次都失败,直到我手动删除了本地配置文件: ~/Library/MobileDevice/Provisioning Profiles

此后,自动签名正常工作,并且从苹果服务器获取了正确的配置文件。

这只影响某些构建,特别是那些我手动为手表应用程序创建了配置文件的构建。


2
对我来说,我没有重复的问题,但是在删除并重新下载我的配置文件之后,它似乎正常工作了。 - Julian K
2
我尝试了其他所有方法,但都没有成功,直到删除现有的配置文件并让Xcode重新下载它们。 - Ron Myschuk
1
抱歉,我该如何访问这个路径 ~/Library/MobileDevice/Provisioning Profiles ?我在我的Finder上搜索却找不到任何"Library"文件夹。 - Chen Li Yong
2
@ChenLiYong 这是一个隐藏文件夹。按下 CMD + Shift + . 以显示所有隐藏文件。 - tmuecksch
@ChenLiYong 从Finder的菜单栏中选择“前往文件夹”,并粘贴“~/Library/MobileDevice/Provisioning Profiles”即可。 - wuf810
@wuf810 谢谢。我已经使用 CMD + Shift + . 技巧找到了它。 - Chen Li Yong

24

如果您使用手动签名(我肯定会鼓励这样做),可能会出现此错误,因为Xcode认为它应该使用开发者证书对发布版本进行签名,而开发者证书显然不包含在发布的配置文件中。

有一个构建设置可以定义哪个证书应该用于哪个构建配置。要更改它,请转到构建设置并搜索代码签名标识。展开后,每个构建配置(通常为Debug和Release)都应该有单独的行,在第二列中选择其所选的标识(通常为iOS Developer或iOS Distribution)。确保为每个构建配置设置了正确的标识。

在某些情况下,构建配置也可以展开。确保其子项也设置为正确的标识。


2
完美的答案 - Nasir
1
谢谢!这正是我所需要的。 - Amadeu Cavalcante Filho

24

我遇到了同样的错误。似乎已经更新了配置文件,添加了新证书,即使在下载时也进行了检查。此外,我还吊销了前开发者的证书,并从配置文件中排除了该证书。但是Xcode仍然提示我之前的证书错误:

No certificate for team 'MY_TEAM' matching 'iPhone Developer: FORMER_DEVELOPER' found

所以,我为了解决它所做的:

  1. 进入 Build Settings -> Signing -> Code Signing Identity
  2. 查找所有的“FORMER_DEVELOPER”证书并选择需要的。

希望能对某些人有所帮助。


2
这是唯一真正的解决方案。 - Berk Kaya
1
在我花费4小时在互联网上寻找解决方案后,唯一有效的解决方案。 - Jongers
1
这个很好用。始终要检查 - 代码签名身份。 - KamyFC

21

对于那些仍然在Xcode8中遇到这个问题的人。 对我来说,这是一个重复证书的问题,这是我解决它的方法:

我阅读了Nick的答案,然后开始了我的调查。 我检查了我的特定情况下(在~/Library/Keychains/System.keychain内)的所有密钥和证书。

当我打开文件时,我发现我有两个iPhone Distribution Certificates(那是Xcode要求我的证书),其中一个带有iOS Distribution私钥,我从一开始就在使用,还有另一个iPhone发行证书,其私钥具有名称(iOS Distribution:NAME),这对我来说并不熟悉。我删除了最后一个证书,重新启动Xcode,问题就消失了。 xCode无法解决冲突,这就是为什么它一直报签名证书错误的原因。

检查您的密钥链,也许您有重复的证书。


发生在我身上的事情。 - funct7
这正是我遇到的问题,当我设置Fastlane Match时感到困惑,最终在我的Keychain中有了3个重复的密钥。 - Minh Thai
这是正确的答案,实际上当我第一次创建证书时,我不知道应该在Xcode中导入哪个证书,因此我制作了副本,由于这个原因我一直收到错误提示, 我删除了重复的证书,然后问题得到解决。 - Bilal Yaqoob

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