我遇到了一个错误:证书身份在密钥链中出现了多次。

41

当我遇到这个错误时,我检查了我的组织窗口,发现我的名字中有一个重复的身份标识。我尝试在组织窗口中删除这个重复的身份标识,但我无法选择或删除它。请帮助我删除这个重复的身份标识。

11个回答

74
您的证书存储在您的钥匙串中。只需打开钥匙串并查找副本,然后重新启动 XCode即可。

41
正如另一个答案中所指出的,确保您重新启动Xcode! - 否则从钥匙串访问中删除副本将不会有任何作用。 - DouglasHeriot

25

我遇到了一个问题,即使我在 KeyChain Access 中删除了旧证书,它仍然会持续出现。解决方案是从 XCode 组织者中删除所有使用旧证书的配置文件。


对我来说也是一样,但我的帐户下有两个开发者档案。必须撤销一个、删除这两个档案,然后像这里所做的那样进行刷新https://dev59.com/aWw15IYBdhLWcg3wMY6L#8509545。 - owen gerig

13

打开钥匙串访问。 在面板左下角的“类别”中,您应该选择“我的证书”。 在主面板中,您将看到重复的证书。如果其中一个无效,则会显示红色X。删除它,重新启动Xcode,然后您就可以继续了。


8
在“钥匙串访问”程序中,在“查看”菜单下,选择“显示过期证书”(如果菜单项显示“隐藏过期证书”,那么您已经显示了它们)。然后,在左侧列表中检查每个钥匙串是否存在重复证书。此外,对于每个钥匙串,请务必在“证书”“我的证书”下查找(如果存在)。

5
Xcode 4.3现在会搜索所有的钥匙串以查找签名证书,但这增加了构建错误的频率:
证书标识符(x)在钥匙串中出现不止一次...
苹果解决此问题的步骤在这里:
如何解决CodeSign错误:证书标识符在钥匙串中出现不止一次?
然而,如果您受到该指南最后说明的钥匙串错误的影响,则以下是解决问题的更简单和首选方法:
1)Keychain Access > Edit > Keychain List,取消登录钥匙串的“Shared”复选框。
2)接下来,如果回到Keychain List时发现登录钥匙串仍标记为“Shared”,请备份以下文件,然后删除它们(如果存在)。
/Library/Preferences/com.apple.security-common.plist
~/Library/Preferences/com.apple.security.plist

3) 重试您的构建。


2

在升级到XCode 4.3之后,我也遇到了这个问题。编译过程一直失败,在密钥链中,我确定只有一个开发证书。网络上没有太多关于如何解决它的帮助,但我用以下方法绕过了它。请注意,我不知道这是否适用于旧版本的Xcode,但最好的方法是让Xcode处理整个过程。

首先要检查是否确实有重复的证书。

打开终端并输入此命令:

 sudo /usr/bin/security  find-certificate -a -Z -c "iPhone Developer" | grep SHA-1

如果你看到多个相同的SHA-1哈希值,则说明存在重复项,我们需要将它们删除。
在KeyChain Access中(我尚未验证,但此步骤可能不是必需的):
1. 创建一个新的KeyChain - 我称其为login-new。 2. 在Keychains窗格中选择新的钥匙串。 3. 转到文件->使密钥链“login-new”成为默认项。
在XCode Organizer中:
1. 在设备窗格中,删除所有的配置文件。
在开发人员配置门户网站中:
1. 吊销您的开发和分发证书。
回到XCode Organizer:
1. 您应该有一个空白的配置文件列表。 2. 点击刷新按钮。 3. XCode将提示您登录到您的开发人员帐户,然后询问您是否要生成开发和分发证书,因为找不到任何证书。继续并生成它们。
返回终端并重新输入上面的find-certificate命令。此时,您不应该看到任何重复项。
下一步是修复您的配置文件。因此,请转到配置门户并修改每个配置文件。然后返回到Xcode组织器并点击刷新按钮。
一旦配置文件出现,您将需要重新关联构建设置中的代码签名身份,以确保您不会收到代码签名错误。
您的应用程序现在应该能够在您的设备上构建和运行。

我遇到了这个问题,本以为一定能解决。但是我走到了去掉重复项的步骤,却发现它们仍然存在。我不知道该如何清除它们。 - Jason
我不得不使用“删除证书”手动删除证书。尽管如此,按照这些说明,仍然存在一个重复项!但这一次它出现在钥匙串中,并成功删除了它。这浪费了很多时间。感谢您的帮助! - Jason
有时候在处理证书问题时,你需要坚持不懈地尝试不同的方法来删除它们,直到它们彻底消失。 - Michael Gaylord
对我而言,此方法未能找到“证书”和“我的证书”中重复的证书,正如DataGraham和RickJansen在下面所指出的那样,请务必手动检查。 - MaxGabriel

2

我的情况是,我试图只查看登录钥匙串,但没有成功。当我打开系统钥匙串时,发现有一个旧的(过期的)证书被复制了。删除重复的证书后,一切正常。


0

在我的情况下,一个隐藏的过期证书是重复的原因。上述提示非常有帮助!


0

我一直收到这个错误,即使我删除了重复项。最后我做了以下几步:

  1. 打开钥匙串访问并从“我的证书”和“证书”部分中删除重复的证书(只保留最新的)
  2. 转到密钥并检查是否存在私钥而没有公钥,如果是,则将其删除。
  3. 然后重新启动Xcode。

这解决了我的问题。


0
如果在删除有问题的证书后仍然无法正常工作,请尝试执行Product > Clean。在我的情况下,即使系统重新启动后也是必需的。

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