无法使用钥匙串访问(Mac OS X Mavericks)导入代码签名的公钥或私钥

20
尝试在XCode中构建iOS项目时,我需要导入同事的公钥和私钥以进行代码签名身份验证,但由于在Keychain Access中出现错误,“发生错误。无法导入项目。/无法检索此项内容的内容”,因此我无法这样做。
详细信息:
我从同事的计算机上获得了两个密钥,并将它们导出为两个文件:
Roomer Inc.p12(私钥)
Roomer Inc.pem(公钥)
当他导出这些文件时,他将密码留空(尽管我们还尝试使用“test”作为密码,但结果相同)。
当我双击 Roomer Inc.p12(用于私钥),它会在 Keychain Access 中打开并提示我选择密钥链(默认选中“登录”)。
我单击“添加”,然后提示我输入密钥链的密码(我将其留空)。
接下来,我总是在 Keychain access 中看到此消息:
但是,尽管会出现此消息,但当我单击“确定”时,我会看到一个名为“Roomer Inc”的新私钥条目。请注意,该条目是“登录”密钥链中的私钥,但没有到期日期(应该吗?)。
接下来,对于Roomer Inc.pem文件(公钥),我被要求选择密钥链(“login”),然后我单击“添加”。
然后,我也收到了“发生错误。无法导入项目。/无法检索此项内容的内容”消息,但这次(与私钥不同),我没有看到与我刚添加的相应的条目。

所以,似乎私钥条目可能没有问题(我无法验证),而 Roomer 的公钥条目无法在没有出现错误消息的情况下安装到钥匙串中。请注意,我也尝试使用 security import 命令导入公钥:

$ security import Roomer\ Inc.pem -f pkcs12 ~/Library/Keychains/login.keychain

已导入 1 个密钥。

当我执行此操作时,虽然命令返回“已导入 1 个密钥”,但我在我的“钥匙串访问”窗口中没有看到“Roomer Inc”的公钥(我关闭了“钥匙串访问”并重新打开它)。

无论如何,我们已确定这是我们的阻碍点。(当然,症状是 XCode 项目无法构建用于 TestFlight 的 AdHoc 配置文件)。由于以上解释,我省略了有关 XCode 构建和 TestFlight 设置的其他步骤,因为我们认为核心问题与导入钥匙有关。

1个回答

28
我们找出了问题,并在此发布我的答案,以便其他人可能会发现它有用。
问题实际上是与Keychain Access的用户体验问题有关。让我回过头来给一点背景:当你使用苹果创建分发证书时,你是基于私钥和应用程序权限创建它的。
在Keychain Access中,分发证书被列为在它所创建自的私钥名称下面。这就是问题所在:当你在Keychain Access中使用搜索框(在我们的情况下,我们输入“Roomer”,因为那是我们分发证书的名字)时,它不会查找具有该名称的证书,而是将查找附加到该名称的私钥的证书。
所以,我的同事已经根据一个名为“Jorge Davila”(他的名字)的私钥创建了分发证书,尽管分发证书的名称为“iPhone Distribution: Roomer Inc.”。
当他在Keychain Access中搜索“Roomer”时,正确的证书未显示在搜索结果中,因为该证书所创建的密钥名称为“Jorge Davila”,而不是“Roomer”。因此,他导出了错误的证书,并没有意识到,因为还有其他一些证书(有些已过期)带有该名称。
这就是正确的样子: 这是一个相对微妙的Keychain Access用户体验问题,搜索工具没有给出你预期的结果。我发布这个答案,希望其他人也能发现它有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接