CodeSign错误:证书身份'iPhone Developer:XXXX(12345678)'在钥匙串中出现不止一次。代码签名工具只需要一个。
所以我去了我的钥匙串并将其删除。但是每次重新启动Xcode 4时都会出现此错误,而某些应用程序会将过期的旧证书添加回钥匙串。任何想法为什么和哪个应用程序?
答案 0 :(得分:99)
我遇到了同样的问题。 它已被修复。 它是在我提交了一个应用程序并安装了一些证书来签署该应用程序之后发布的。
快速修复: 打开KEYCHAIN ACCESS>点击我的证书>在那里你可能会看到 iPhone开发人员:。你可能会看到它两次! 选择具有最早到期日期的那个,右键单击并选择DELETE。
如果没有,请重新启动Xcode。 现在工作。 :)
快乐编码。
答案 1 :(得分:71)
我想我弄清楚为什么简单删除不起作用。由于开发证书仍存储在供应配置文件中,因此当我在Keychain中删除证书后关闭/重新打开Xcode时,我看到旧证书返回。所以我再删除它。有效。
简单删除个人资料解决方案对我不起作用。
答案 2 :(得分:9)
我花了相当多的时间来解决同样的问题。在尝试修复它之后,我终于意识到这是Xcode中的一个错误。这篇文章给了我解决它的线索: certificates magically re appearing in your keychain
在我的情况下,匹配的私钥位于系统密钥链中,并且只有我的名字(很难说它是用于配置)。我必须:
一个有趣的观察是,当您删除证书时,它不会删除关联的私钥。在视觉上,它显示了证书下面的私钥。不要被愚弄。
祝你好运!答案 3 :(得分:4)
好的,找到另一个“相关”问题的答案。 Xcode expired certificate problem Xcode 4的已知问题 http://openradar.appspot.com/9173280
答案 4 :(得分:4)
如果您是iOS开发人员和企业iOS开发人员计划的成员,并且您为两个应用程序输入了相同的公司名称,那么最终将获得两个具有相同名称的有效分发证书。
我相信这个问题可以解决这个问题: CodeSign collisions between Developer and Enterprise Distribution
答案 5 :(得分:3)
我对xcode45-DP1也有同样的问题。这对我有用:
从钥匙串中删除与您的帐户相关的所有证书。退出钥匙串
从xcode中删除与您的帐户相关的所有配置文件:organizer:device:Library:provisioning profiles。退出xcode
撤销您的证书并重新生成并将其下载到您的构建计算机
,单击下载按钮旁边的编辑以确保选择了您的名称。
然后下载配置文件
双击证书将其安装到钥匙串
将配置文件拖到xcode:organizer:device:Library:provisioning profiles
不要点击xcode中的刷新按钮。
进行构建。
答案 6 :(得分:3)
答案 7 :(得分:1)
我遇到了将僵尸证书重新填充到我的钥匙串并且证书身份出现两次的问题。简单地删除重复的证书不起作用。
在Xcode中,当我在目标中查看我的代码签名时,我记得我在“Ad Hoc”构建中有一个与“Release”构建不同的分发配置文件。
当我生成新证书时,我只下载了Ad Hoc版本的新配置文件,而不是Release版本。
Xcode挂在这两个配置文件的证书上,因此Xcode导致重复的证书......因为我忘了更新我的配置文件。
确保将所有配置文件更新为新证书,并在Xcode中同时更改所有配置文件。
答案 8 :(得分:1)
我遇到了这个问题并阅读了有关它的每一条信息,最后我自己找到了解决方案。人们没有提到的是 BEFORE 清理Xcode组织者中的证书, BEFORE 清理钥匙串中过期的密钥,您需要确保没有任何过期配置门户中的证书。 如果您使用旧的开发人员证书的旧应用程序甚至会有一个过期的证书,Xcode会在第一次构建时将其拉入其管理器,然后从那里转到您的钥匙串并导致重复。
答案 9 :(得分:1)
在我的情况下,“缓存”Xcode看起来是一个附加的iOS设备。要确定这是否适合您:
如果这是您的根本原因,您可以通过确保在启动Xcode之前断开iOS设备来解决问题。
答案 10 :(得分:0)
Simply deleting the redundant certificate对我不起作用。似乎每次调用xcodebuild时,它都是从某个缓存中的“重新创建”钥匙串中的证书......与avi相同的问题我为它创建了一个hack / fix,试图找到它的位置文件被缓存并清除它,但没有运气。最后,对我有用的东西(有点黑客,但是嘿,你还能做什么),是找出证书编号是什么,并在调用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
您现在可以打开钥匙串并运行构建命令,并观察有问题的僵尸证书是如何复活的,然后在它成为代码签名问题之前进行总结。希望Apple能为此提出一个真正的解决方案。
答案 11 :(得分:0)
在我的情况下删除证书不起作用。 XCode 4似乎缓存或恢复它们。最终对我有用的诀窍是让keychain和xcode运行。然后在钥匙串中将我的2个证书(dev + dist)从“登录”拖到“系统”。然后复制品神奇地重新出现,我能够删除它们,然后我将证书拖回'登录'
答案 12 :(得分:0)
非常简单,将正确的证书导出到您的桌面。删除该证书 在钥匙串。尝试使用错误消息构建源代码(没有证书..) 然后再次导入证书。 =>成功了!
答案 13 :(得分:0)
我刚刚删除了钥匙串中的一个私钥,用于我不再需要的证书。
即使证书重新出现,但私钥不会重新出现。现在检查有效证书,只显示一个证书,其私钥被删除的其他证书不再显示在有效证书下。
我认为这是解决此问题的最简单方法。
答案 14 :(得分:0)
我曾经处理过同样的问题。我已经通过从xcode中的Organizer选项卡中删除未使用的配置文件来解决它。实际上,Keychain将从此配置文件获取该证书,该配置文件是过期证书或通过吊销证书构建。
因此,您只需从“管理器”标签中删除此配置文件。管理器位于xcode的右上侧按钮打开它,而不是在管理器中删除您不使用的配置文件。
这是截图,
并且不要忘记从钥匙串中删除额外的证书,但之后这些证书不再出现。