可能重复:
xCode 4 - 重新安装我删除的密钥链证书
这个问题简而言之.
在Xcode中构建项目时,我收到来自Check dependencies步骤的错误消息:
CodeSign error: Certificate identity 'iPhone Developer: xxxxx' appears more than once in the keychain. The codesign tool requires there only be one.
Run Code Online (Sandbox Code Playgroud)
问题是,每当启动Xcode时,都会重新安装此证书标识.它也是一个过期的证书,会造成额外的混乱.所以我在钥匙串中删除它,并构建项目,一切正常.
退出Xcode,重新启动,观看Keychain和TA-DA!过期的证书重新出现.
我觉得我回到了病毒感染的Windows机器上.
由于项目在删除证书时正确构建和执行,唯一的问题是xcode的自动安装.
编辑:
我认为无论出于何种原因,它都必须与xcode对钥匙串的检查有关.然后xcode决定根据其对钥匙串的检查来安装证书,尽管这是一个错误的决定.如果我花了24-48小时,我可以解决这个问题,但我能够继续工作,而不会退出Xcode.:)
我的公司使用一台构建机器(Mac Mini)作为CI节点来构建我们的iOS应用程序.我们目前在mini上构建了一个Ad-Hoc和一个App Store配置.我们最近注册了企业计划,并希望开始构建企业配置.但是,我们的构建过程现在失败了,因为我们现在有两个名为"iPhone Distribution:Widget Corporation"的证书.一个是AdHoc/AppStore的分发证书,一个是Enterprise(Apple称之为In-House).
我已经尝试修改mini的钥匙链,使得一个证书在登录钥匙串中,一个在一个名为"enterprise"的新钥匙串中,但这只是从构建开始转移了错误:
CodeSign error: Certificate identity 'iPhone Distribution: Widget Corporation' appears more than once in the keychain.
Run Code Online (Sandbox Code Playgroud)
到构建结束时:
iPhone Distribution: Widget Corporation: ambiguous (matches "iPhone Distribution: Widget Corporation" in /Users/hudson.admin/Library/Keychains/login.keychain and "iPhone Distribution: Widget Corporation" in /Users/hudson.admin/Library/Keychains/enterprise.keychain)
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有办法正确沙箱两个证书,以便我可以在同一台机器上构建应用程序的Ad-Hoc,App Store和内部版本.我还没有尝试的唯一可能的解决方案是将证书与源捆绑在一起,并根据security需要添加和删除证书; 显然,解决方案不是很漂亮,并带来安全风险.
有任何想法吗?
请看下面的截图

如您所见,有两个证书.所有都是我的,具有加工用户的ID和通用名称.
每当我构建应用程序并在Xcode中为设备启动它时,我都会收到致命的证据,即此证书是重复的.所以我删除了过期的应用程序并再次启动应用程序 - 它正在设备上安装和调试,没有任何问题.
但是,当我启动其他项目或重新启动时,一次又一次地在钥匙串中显示过期的证书,这会变得有点烦人.
是什么原因导致过期的证书被重新读入钥匙串?我该怎么办呢?
尽管只安装了一个,但操作系统似乎错误地列出了多个身份。
这是我的钥匙串(安全列表钥匙串)
"/Users/mateuscb/Library/Keychains/login.keychain"
"/Library/Keychains/System.keychain"
Run Code Online (Sandbox Code Playgroud)
我列出了身份,但返回的身份为零。
然后我通过以下命令行导入它:
security import "~/mycert.p12" -k "/Users/mateuscb/Library/Keychains/login.keychain" -t cert -f pkcs12 -P password`
Run Code Online (Sandbox Code Playgroud)
当我列出身份时,我现在得到这个(security find-identity):
Valid identities only
1) 7E0B7E829EBF27EEC57CC796F948D7C2D9A91330 "Developer ID Application: The Company Inc."
2) 7E0B7E829EBF27EEC57CC796F948D7C2D9A91330 "Developer ID Application: The Company Inc."
Run Code Online (Sandbox Code Playgroud)
更奇怪的是,如果指定钥匙串,我只得到一个(security find-identity login.keychain)。并且 System.keychain 始终为空。
我还多次休息过我的钥匙串(钥匙串访问)。
certificate ×2
iphone ×2
build ×1
cocoa-touch ×1
code-signing ×1
codesign ×1
hudson ×1
import ×1
ios ×1
keychain ×1
macos ×1
objective-c ×1
xcode ×1
xcode4 ×1