代码签名错误:证书标识“iPhone Developer: My Name (xxx)”在钥匙串中出现了多次

25
我遇到了这个错误:
代码签名错误:证书标识“iPhone Developer: My Name (xxx)”在钥匙串中出现多次。codesign工具要求只有一个。
我尝试更新构建新的CSR,删除旧的证书,再次构建新的证书,反复尝试,但仍然存在此错误。
在钥匙串中,我没有看到任何重复的证书,如果我删除唯一能看到的证书,Xcode就会抱怨找不到该证书...

(作为对Inder Kumar答案的修正)然后点击刷新。同时不要只查看开发计算机的钥匙串 - 查看一下存储在设备上的内容(在Xcode组织器中),并进行清理。 - Rok Jarc
14个回答

19

Xcode 4.3现在会搜索所有钥匙串以查找签名证书,但这会增加构建错误的频率:

 

Certificate identity (x) appears more than once in the keychain...

苹果的解决步骤在这里:如何解决CodeSign错误:Certificate identity appears more than once in the keychain?

然而,如果您受到该指南最后注意事项中提到的钥匙串 bug 的影响,以下是一个更简单且更优选的解决方案:

1)钥匙串访问 > 编辑 > 钥匙串列表,对于登录钥匙串,请取消“共享”复选框。

2)接下来,如果返回钥匙串列表时发现登录钥匙串仍标记为“共享”,请备份以下文件(如果存在),然后将其删除:

/Library/Preferences/com.apple.security-common.plist
~/Library/Preferences/com.apple.security.plist

3) 重试您的构建。


苹果支持已经建议我尝试步骤1和2,但没有起作用,我将在周一尝试步骤3和4,并且是的,我使用XCode 4.3。 - Nico AD
2
从上述苹果文档中删除孤立的“Keys”对我很有帮助。 - Josh Metcalfe
我发现当我在钥匙串访问 > 系统中删除了一个证书后,它仍然出现在“登录”类别中。之后我将其从“登录”中删除,一切都运作良好!感谢你,你救了我的一天。 - aztack

5
我在将XCode更新到4.3后遇到了同样的问题。删除证书和配置文件没有改变任何事情。无论如何,也没有重复或过期的证书。
问题是我的私钥同时存在于会话和系统钥匙串中的Keychain Access中。我只需要从系统钥匙串中删除它,就可以重新构建项目了。

谢谢,这是最有帮助的,因为我完全忘记了查看系统钥匙串,这正是导致问题的原因。谢谢! - David Rutgos

2
如果您已经在KeyChain中删除了所有其他开发人员证书,但错误仍然出现,则尝试删除所有旧的/未使用的带有您姓名的密钥(私钥)。必需的那个是名称旁边带有小“文件夹增强图标”的密钥。我保留了这个并删除了其余的,问题得到了解决。

2
我也遇到了同样的问题。我认为你可能会通过多种方式进入这种状态,但对我来说,是因为证书最近已过期。
我没有意识到钥匙串访问将隐藏过期的证书。转到“查看”并确保您没有隐藏重复的证书。

2

我曾经遇到过同样的问题,解决方法是从我的钥匙串中删除所有证书,从Xcode中删除所有配置文件,从设备中删除所有配置文件,然后重新创建。 我猜这通常发生在您使用不同配置文件并为同一配置文件创建了多个证书时。


1

这个方法有时对我有效:

  • 删除钥匙串中所有可见的重复项(通常这一步不会单独帮助我)
  • 然后还要删除(或至少是暂时重命名/移动)~/Library/Developer/Xcode文件夹。Xcode在其中保留旧的垃圾/缓存。我想配置文件也存在那里。清除它们。(注意,此文件夹的路径在Xcode首选项中是可更改的,因此如果您更改了路径,请前往该路径并删除内容。)

然后重新构建。在我遇到这个错误无数次后,这个方法在本分钟内对我起作用了。


1

我有同样的问题。我查看了SO上能找到的每个相关问题并按照步骤操作,但都没有成功。它一直告诉我我的分发证书出现了多次,但我可以看到它只出现了一次。我吊销了证书,多次关闭了X-Code,但结果发现还有一个“隐藏”的证书。我有一个旧的分发证书不在登录钥匙串中。它在一个未命名的钥匙串中。当我删除那个证书时,它就起作用了!所以值得彻底查看密钥串访问情况!


1

在迁移到新的开发 Mac 后,我遇到了这个问题。我尝试删除重复项并检查是否存在隐藏的过期证书,但错误仍然存在。对我起作用的解决方案是从旧 Mac 复制密钥链对并将其导入新的 Mac 中。然后通过以下方式解决了该问题:

  • 在“密钥串访问”中选择证书
  • 展开箭头以查看私钥
  • 双击私钥
  • 单击“访问控制”
  • 选择“允许所有应用程序使用此项目”
  • 单击“保存更改”

对我来说,随后我成功地重建了该应用程序。

希望能帮助到某些人 :-)


0
通过组织者 -> 团队(选择您的团队) -> 刷新(右下角)进行修复。

0

我删除了所有证书和配置文件,重新启动系统并再次添加它,这样就可以了。


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