协同设计错误:证书身份出现两次


103

CodeSign错误:证书标识“ iPhone Developer:XXXX(12345678)”在钥匙串中出现多次。代码签名工具只需要一个。

所以我去我的钥匙串并删除它。但是,每次重新启动Xcode 4时,都会收到此错误,并且某些应用程序将过期的旧证书重新添加到钥匙串中。任何想法为什么以及哪个应用程序?


Answers:


99

我只是有同样的问题。已修复。我提交了一个应用程序并安装了一些证书以对该应用程序进行签名之后。

快速修复:打开KEYCHAIN ACCESS>单击“我的证书”>,您可能会看到iPhone Developer :。您可能会两次看到它!选择最早的到期日期,右键单击并选择DELETE。

如果没有,请重新启动Xcode。现在可以使用。:)

编码愉快。


27
再一步!删除重复的证书后,您需要在XCode中打开管理器并刷新配置文件。
Meekohi,2012年

@Meekohi“刷新”我的配置文件是什么意思?谢谢!
abw333 2012年

7
删除旧证书后,重新启动Xcode为我解决了同样的问题。
Maxim Mikheev 2012年

在Xcode 4(我有4.4.1)上,我必须删除与旧证书关联的所有供应配置文件。然后,我重新启动Xcode,并且旧证书停止了(魔术地)出现在钥匙串上。
罗伯托

3
为我工作了一次(我正在使用Xcode 4.6.3)。我删除了过期的(或即将过期的)证书,然后重新启动Xcode,但仍然遇到问题-旧的证书以某种方式重新出现在KeyChain Access中。因此,我重新启动了Xcode,但是在选择打开项目之前,我回到了KeyChain Access,并且旧的证书又在那儿了,所以我删除了它。然后,我打开了我的projet(在已经运行的Xcode中),一切都很好-我能够再次进行构建。
Ed Sinek 2013年

71

我想我知道了为什么简单删除无法正常工作。由于dev证书仍存储在配置文件中,因此在删除Keychain中的证书后关闭/重新打开Xcode时,我看到旧证书又回来了。因此,我再次将其删除。有效。

简单的删除配置文件解决方案对我不起作用。

在我的情况下有效的解决方案:

  1. 退出Xcode
  2. 如果钥匙串访问处于打开状态,请保持打开状态。
  3. 立即启动Xcode。
  4. 看到Xcode抱怨的证书将在启动时从其缓存中重新添加到钥匙串中。
  5. 继续删除它。
  6. 编译愉快。

3
我尝试了上述所有解决方案,而这个解决方案就可以了。似乎有多种原因/解决方案。
内森·汉根

+1:我可以确认XCode确实保留了证书的“缓存”并在其启动时添加了它们-这样工作很糟糕!它导致了很多问题!让您感到羞耻的苹果,由于与之抗争,这已经造成了数小时的时间浪费!
JRG-Developer

10

我只是花了很多时间来解决这个问题。在尝试修复它之后,我终于意识到这是Xcode中的错误。这篇文章给了我一个解决的线索: 证书神奇地重新出现在您的钥匙串中

在我的情况下,匹配的私钥在系统钥匙串中,并且上面只有我的名字(很难说这是用于供应)。我不得不:

  • 将关联的私钥移动到“登录”钥匙串
  • 重新启动Xcode,注意到私钥现在显示为已关联(确认其用途)
  • 删除证书和私钥
  • 重新启动Xcode和poof!它停止添加我的旧证书

一个有趣的发现是,当您删除证书时,它不会删除关联的私钥。从视觉上看,它在证书下方显示了私钥。不要上当。

祝好运!


删除私钥对我也有用-最新的xcode 2012年10月更新山狮
ina



3

我对xcode45-DP1有同样的问题。这对我有用:

  1. 从钥匙串中删除与您的帐户相关的所有证书。QUIT钥匙扣

  2. 从xcode:organizer:device:Library:provisioning配置文件中删除与您的帐户相关的所有配置文件。退出xcode

  3. 吊销您的证书并重新生成它,然后将其下载到您的构建计算机上

  4. 在下载配置文件之前,请单击下载按钮旁边的“ 编辑”以确保已选择您的姓名。

  5. 然后下载配置文件

  6. 双击证书以将其安装到钥匙串上

  7. 将配置文件拖动到xcode:organizer:device:Library:provisioning配置文件

  8. 不要单击xcode中的刷新按钮。

  9. 进行构建。


3

答案在这里

使用Organizer使用旧证书删除所有我的旧配置文件,然后退出XCode,从钥匙串中删除旧证书并重新启动XCode。

当您在配置文件中引用时,xcode似乎会保留证书


1

我在将僵尸证书重新填充到钥匙串中且证书身份出现两次时遇到麻烦。仅仅删除重复的证书是行不通的。

在Xcode中,当我查看目标中的“代码签名”时,我记得在“ Ad Hoc”构建中使用的发布配置文件与在“ Release”构建中使用的分发配置文件不同。

生成新证书时,我仅下载了针对Ad Hoc版本的新配置文件,而不下载了Release版本的配置文件。

Xcode都挂在这两个配置文件的证书上,因此Xcode导致重复证书...因为我忘记正确更新我的配置文件。

确保将您所有的配置文件更新为新证书,并在Xcode中同时更改所有配置文件。

确保使用新证书更新所有供应配置文件,否则Xcode会尝试将两个配置文件的证书放入钥匙串中……导致重复错误!


1

我遇到了这个问题,并阅读了有关它的所有信息,最后我自己找到了解决方案。人们没有提到的是,清理Xcode组织者中的证书之前以及清理钥匙串中的过期密钥之前,需要确保您在Provisioning Portal中没有任何过期的证书。如果您对于使用旧开发者证书的旧应用程序甚至拥有一个过期证书,则Xcode会将其先构建到其组织者中,然后从那里转到您的钥匙串,并导致重复。


1

就我而言,Xcode所查看的“缓存”是一台连接的iOS设备。要确定这是否是您的问题:

  1. 断开所有iOS设备的连接
  2. 从钥匙串访问中删除有问题的证书和私钥
  3. 重新启动Xcode
  4. 检查钥匙串访问:在我的情况下,此时尚未重新创建重复项
  5. 重新连接iOS设备
  6. 再次重新启动Xcode
  7. 检查钥匙串访问:在我的情况下,此时已重新创建了重复项

如果这是引起您根本原因的原因,则可以通过在启动Xcode之前确保断开iOS设备的连接来解决此问题。


0

简单地删除冗余证书对我不起作用。似乎每次xcodebuild都被调用时,它是在某处的缓存中“重新创建”密钥链中的证书...与avi相同的问题我为它创建了一个hack /修复程序,试图找到文件在哪里缓存并清除它,但没有运气。最后,对我有用的(有点hack,但是,您还能做些什么)是弄清楚证书号是什么,并在调用xcodebuild之后不久将其手动从钥匙串中删除。首先,转到您的/ usr / bin /目录(或任何包含您的xcodebuild文件的目录,请尝试which xcodebuild)并运行以下命令:

sudo mv xcodebuild xcodebuild_actual

然后使用您最喜欢的编辑器(不要忘记使用sudo)通过以下代码创建文件:

xcodebuild_actual $* &
echo "xcodebuild started, waiting to wipe certificate, 10 seconds"
sleep 2
echo "Wiping Certificate..."
sudo security -v delete-certificate -t -Z 407629F811D52C0BB7AD31BBB18DCB496354B05E

注意:您必须修改sudoers文件才能访问此特定命令,而无需输入密码。

将上面-Z之后的十六进制标识替换为有问题的僵尸证书的十六进制标识。最后,确保xcodebuild文件是可执行文件:

sudo chmod 755 xcodebuild 

现在,您可以打开钥匙串并运行build命令,并查看有问题的僵尸证书是如何复活的,然后在将其变成代码签名问题之前先进行散弹枪。希望苹果公司能够为此提供一个真正的解决方案。


0

以我为例,删除证书无效。XCode 4似乎可以缓存或还原它们。最终对我有用的诀窍是运行钥匙串和xcode。然后在钥匙串中将我的2个证书(dev + dist)从“登录”拖到“系统”。然后,这些重复副本神奇地重新出现,我可以删除它们,然后将证书拖回“登录”


0

非常简单,将正确的证书导出到您的桌面。在钥匙串中删除该证书。尝试构建带有错误消息的源(没有证书。),然后再次导入证书。=>成功!


0

我只是删除了我不需要的证书的钥匙串中的一个私钥。

即使重新包装证书,但私钥也不会重新出现。现在,检查是否有有效的证书,并且仅会显示一个证书,并且其私钥已删除的其他证书不再显示在有效证书下。

我认为这是解决此问题的最简单方法。


0

我曾经处理过同样的问题。我已经通过从xcode的Organizer选项卡中删除未使用的供应配置文件解决了该问题。实际上,Keychain将从此供应配置文件中获取该证书,该证书可以是过期的证书,也可以是通过吊销证书生成的证书。

因此,您只需要从管理器选项卡中删除此配置文件。管理器位于xcode的右上角按钮上,然后将其打开,然后在管理器中删除不使用的配置文件。

这是屏幕截图,

在此处输入图片说明

并且不要忘记从钥匙串中删除多余的证书,但是之后这些证书不会再次出现。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.