【发布时间】:2011-08-21 09:51:10
【问题描述】:
CodeSign 错误:证书身份“iPhone Developer: XXXX (12345678)”在钥匙串中出现多次。协同设计工具只需要一个。
所以我去我的钥匙串并删除它。但是每次我重新启动 Xcode 4 并且某些应用程序将过期的旧证书添加回钥匙串时,我都会收到此错误。任何想法为什么以及哪个应用程序?
【问题讨论】:
标签: iphone objective-c xcode4 code-signing
CodeSign 错误:证书身份“iPhone Developer: XXXX (12345678)”在钥匙串中出现多次。协同设计工具只需要一个。
所以我去我的钥匙串并删除它。但是每次我重新启动 Xcode 4 并且某些应用程序将过期的旧证书添加回钥匙串时,我都会收到此错误。任何想法为什么以及哪个应用程序?
【问题讨论】:
标签: iphone objective-c xcode4 code-signing
我也遇到了同样的问题。 它已被修复。 它是在我提交了一个应用程序并安装了一些证书来签署该应用程序之后出现的。
快速修复: 打开 KEYCHAIN ACCESS > 点击 MY CERTIFICATES> 在那里你可能会看到 iPhone 开发者:.你可能会看到它两次! 选择过期日期最早的,右键选择DELETE。
如果你还没有重启 Xcode。 现在工作。 :)
快乐编码。
【讨论】:
我想我明白为什么简单的删除不起作用了。因为开发证书仍然存储在配置文件中,所以当我在删除钥匙串中的证书后关闭/重新打开 Xcode 时,我看到旧证书又回来了。所以我再次删除它。有效。
简单的删除配置文件解决方案对我不起作用。
【讨论】:
我刚刚花了相当多的时间来解决同样的问题。经过所有尝试修复它,我终于意识到这是 Xcode 中的一个错误。这篇文章给了我一个修复它的线索: certificates magically re appearing in your keychain
在我的情况下,匹配的私钥在系统钥匙串中,并且上面只有我的名字(很难说它是用于配置的)。我不得不:
一个有趣的观察是,当您删除证书时,它不会删除关联的私钥。在视觉上,它显示了证书下方的私钥。不要被愚弄了。
祝你好运!
【讨论】:
好的,找到另一个“相关”问题的答案。 Xcode expired certificate problem Xcode 4 的已知问题 http://openradar.appspot.com/9173280
【讨论】:
如果您是 iOS 开发人员和企业 iOS 开发人员计划的成员,并且您为两个应用程序输入了相同的公司名称,您最终将获得两个具有相同名称的有效分发证书。
我相信这个问题可以解决这种情况: CodeSign collisions between Developer and Enterprise Distribution
【讨论】:
我对 xcode45-DP1 有同样的问题。这对我有用:
从钥匙串中删除与您的帐户相关的所有证书。退出钥匙串
从 xcode:organizer:device:Library:provisioning 配置文件中删除与您的帐户相关的所有配置文件。退出 xcode
撤销您的证书并重新生成并将其下载到您的构建机器
在下载配置文件之前,单击下载按钮旁边的编辑,以确保您的名字被选中。
然后下载配置文件
双击证书将其安装到钥匙串上
将配置文件拖到 xcode:organizer:device:Library:provisioning 配置文件
不要点击 xcode 中的刷新按钮。
进行构建。
【讨论】:
答案是here
使用带有 Organizer 的旧证书删除我的所有旧配置文件,然后退出 XCode,从 Keychain 中删除旧证书并重新启动 XCode。
当您在配置文件中引用时,xcode 似乎会保留证书
【讨论】:
我在将僵尸证书重新填充到我的钥匙串中并且证书身份出现两次时遇到了问题。简单地删除重复的证书是行不通的。
在 Xcode 中,当我查看目标中的代码签名时,我记得我在“Ad Hoc”构建中的分发配置文件与“Release”构建不同。
当我生成新证书时,我只下载了 Ad Hoc 构建的新配置文件,而不是 Release 构建的新配置文件。
Xcode 挂在这两个配置文件的证书上,因此 Xcode 导致证书重复...因为我忘记正确更新我的配置文件。
确保将所有配置文件更新为新证书,并在 Xcode 中同时更改所有配置文件。
【讨论】:
我遇到了这个问题并阅读了有关它的所有信息,最后我自己找到了解决方案。人们没有提到的是 BEFORE 清理 Xcode 管理器中的证书和 BEFORE 清理你的钥匙串中过期的密钥,你需要确保你没有任何过期的Provisioning Portal 中的证书。 如果您甚至有一个使用旧开发人员证书的旧应用程序的过期证书,Xcode 将在第一次构建时将其拉入其组织者,然后它将进入您的钥匙串并导致重复。
【讨论】:
在我的例子中,Xcode 正在查看的“缓存”是一个附加的 iOS 设备。要确定这是否是您的问题:
如果这是你的根本原因,你可以通过确保在启动 Xcode 之前断开 iOS 设备来解决它。
【讨论】:
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 能真正解决这个问题。
【讨论】:
在我的情况下,删除证书不起作用。 XCode 4 似乎缓存或恢复它们。最终对我有用的技巧是让钥匙串和 xcode 运行。然后在钥匙串中将我的 2 个证书(dev+dist)从“登录”拖到“系统”。然后重复项神奇地重新出现,我能够删除它们,然后我将证书拖回“登录”
【讨论】:
这很容易,将正确的证书导出到您的桌面。删除该证书 在钥匙串中。尝试使用错误消息构建源代码(没有证书..) 然后再次导入证书。 => 成功!
【讨论】:
我刚刚删除了我不再需要的证书的钥匙串中的一个私钥。
即使证书重新出现,但私钥不会重新出现。现在检查有效证书,只有一个证书会出现,其他被删除私钥的证书不再显示在有效证书下。
我认为这是解决此问题的最简单方法。
【讨论】:
我曾经处理过同样的问题。我已经通过从 xcode 的 Organizer 选项卡中删除未使用的配置文件来解决它。实际上,钥匙串将从这个配置文件中获取该证书,该证书要么是过期的证书,要么是由撤销的证书构建的。
因此,您只需从“管理器”选项卡中删除此配置文件。管理器位于 xcode 的右上角按钮打开它,然后在管理器中删除您不使用的配置文件。
这是截图,
并且不要忘记从钥匙串中删除额外的证书,但之后这些证书不会再次出现。
【讨论】: