为啥 Xcode 会在钥匙串中自动安装(重复和过期的)证书? [复制]

Posted

技术标签:

【中文标题】为啥 Xcode 会在钥匙串中自动安装(重复和过期的)证书? [复制]【英文标题】:Why does Xcode auto-install a (duplicate and expired) certificate in the keychain? [duplicate]为什么 Xcode 会在钥匙串中自动安装(重复和过期的)证书? [复制] 【发布时间】:2011-07-17 04:37:22 【问题描述】:

可能重复:xCode 4 -reinstalls keychain certs that I delete

问题一言以蔽之。

在 Xcode 中构建项目时,我从检查依赖项步骤收到错误消息:

CodeSign error: Certificate identity 'iPhone Developer: xxxxx' appears more than once in the keychain. The codesign tool requires there only be one.

问题是,每次启动 Xcode 时都会重新安装此证书身份。它也是一个过期的证书,这会导致额外的混乱。所以我在钥匙串中删除它,然后构建项目,一切正常。

退出Xcode,重启,看Keychain,还有TA-DA!过期的证书重新出现。

我感觉自己回到了受病毒感染的 Windows 机器上。

由于删除证书后项目构建和执行正常,唯一的问题是自动安装xcode。


编辑:

我认为这一定与 xcode 对钥匙串的检查有关,无论出于何种原因。然后 xcode 根据对钥匙串的检查决定安装证书,尽管这是一个错误的决定。如果我花费 24-48 小时,我可能可以解决这个问题,但我可以继续工作,而无需退出 Xcode。 :)

【问题讨论】:

【参考方案1】:

我在使用 XCode 3(不是 4)时也有同样的经历,只删除 Keychain 中的旧证书是行不通的。

我还使用 Organizer 添加了使用旧证书删除所有旧配置文件,然后退出 XCode,从 Keychain 中删除旧证书并重新启动 XCode。

现在它似乎工作正常!

【讨论】:

你摇滚!这对我有用:) 非常感谢!让我免于令人沮丧的打开/关闭操作。 删除其他证书和私钥后,它也适用于我!但是我想知道如何避免Xcode自动下载这些证书,因为这个问题会在一段时间后再次出现!【参考方案2】:

您可能想尝试xCode 4 -reinstalls keychain certs that I delete的解决方案

亲切的问候,弗兰克

【讨论】:

【参考方案3】:

不确定是什么原因造成的,但可以尝试以下两点:

首先...Xcode 在这方面历来存在一些错误,只能通过退出 Xcode、从钥匙串中删除东西、重新启动 OS X 来解决(真的 - 不知道 XCode 中有什么可以幸存应用程序重新启动,但我已经看到它发生了),然后重新启动 XCode。我已经一年多没有看到这些了,但可能是回归错误?

其次...虽然它不处理证书,但如果您还没有,您应该尽可能使用 iPhone 配置实用程序 (http://support.apple.com/kb/dl851) 作为配置文件部分- 它经常为这方面的 Xcode 错误提供手动修复。

哦,第三点(没有人希望西班牙宗教裁判所):如果您检查控制台,它有时包含 Xcode 中处理证书和证书签名的命令行工具的额外调试/错误信息(包括其他地方没有出现的错误消息)

【讨论】:

谢谢!删除所有内容后重新启动,然后手动重新安装证书(我不信任/没有尝试自动安装)就可以了。 Xcode 4.3.1 中显然仍然存在配置错误。【参考方案4】:

从组织者那里删除您喜欢的过期证书的所有配置文件。

转到供应门户创建新证书。之后,对于每个配置文件,通过选择编辑页面上的证书复选框来编辑它们并保存它们,然后重新下载配置文件。

【讨论】:

【参考方案5】:

为了后代,这是在我们的自动构建脚本中解决此问题的策略:

    在构建之前,将 ~/Library/MobileDevices/Provisioning Profiles 目录移到一边 检查 iPhone 配置实用程序 是否正在运行并关闭它(如果此应用程序打开,证书总是会重新出现。在 XCode 4.1 中,您也需要关闭管理器。) 运行你的构建 将 Provisioning Profiles 目录移回 利润?

【讨论】:

以上是关于为啥 Xcode 会在钥匙串中自动安装(重复和过期的)证书? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

通过 Xcode 安装 iOS IPA,钥匙串中没有证书,也没有安装配置文件

即使在从钥匙串访问和 App Store Connect 中删除后,重新启动 Xcode 时,已删除的 iOS 证书仍会继续显示在钥匙串中

在 XCode 中签名应用程序:在钥匙串中找不到指定的项目

Xcode - iPhone - 配置文件与默认钥匙串中的任何有效证书/私钥对不匹配

访问钥匙串中的安全项目有时会在 iOS 中返回错误 -25308 (errSecInteractionNotAllowed)

代码签名错误:证书身份在钥匙串中出现多次 [重复]