2014-05-08 86 views
16

在尝试构建iOS项目(在XCode中)时,需要导入我的同事的公钥和私钥以进行代码签名身份,但我不能这样做,因为我得到了钥匙串访问错误,说无法使用钥匙串访问导入代码签名公钥或私钥(Mac OS X Mavericks)

全部细节“时发生错误无法导入项目/此项目的内容不能被检索到。”:

我从同事的电脑上拿到了两把钥匙,从他的钥匙链中将它们导出为两个文件:

Roomer Inc.p12(私人电话号码簿Y)

Roomer酒店Inc.pem(公钥)

当他出口这些,他留下的密码为空(虽然我们也以“test”的密码尝试,得到了相同的结果)。

当我双击Roomer酒店Inc.p12(私钥),它在钥匙串访问打开和promts我选择(“登录”默认情况下选中)

我点击“添加”钥匙串然后提示我输入密码的钥匙串(我留空)

接下来,我总是在钥匙串访问看到这条消息:

screenshot of error

然而,尽管这条消息出现,当我点击好吧,我是即为“Roomer Inc”新的私钥条目。请注意,此条目是“登录”钥匙链中的一个私钥,因为我期望,但没有过期日期(应该如何?)

接下来,对于Roomer Inc.pem文件(公钥),我要求选择钥匙串(“登录”),然后点击添加

然后,我还收到“发生错误,无法导入项目/无法检索此项目的内容”消息关键也是如此。然而,在这种情况下(与私钥不同),我没有看到任何对应于我刚刚添加的内容的条目。

所以,看来私钥条目可能是也可能不是正常(我没有办法来验证),并为Roomer酒店的公共密钥项不能安装在钥匙串没有此错误消息。请注意,我使用的安全导入命令导入公共密钥也试过:

$安全进口Roomer酒店\ Inc.pem -f PKCS12〜/图书馆/钥匙扣/ login.keychain

1键导入。

当我这样做,虽然命令返回“1键导入”我没有看到我的钥匙串访问窗口中的“Roomer公司”的公钥(我关闭了钥匙串访问并重新打开它)。

无论哪种方式,我们已经确定这是我们的拦截器。 (当然症状是XCode项目不会构建AdHoc供应配置文件与TestFlight一起使用)。我已经放弃了关于XCode构建和TestFlight设置的额外步骤,因为我们相信核心问题与导入上述密钥有关。

回答

23

我们想出了我们的问题,并在此发布我的答案,以便其他人可能会发现它有帮助。

该问题实际上是钥匙串访问用户体验问题。让我备份并给出一点上下文:当您使用Apple创建分发证书时,可以基于PRIVATE KEY和基于应用程序的权限来创建它。

在钥匙串访问中,分发证书在其创建的私钥名称下方作为子项列出。这里有一个问题:在Keychain访问中使用搜索框时(在我的情况下,我们输入的是“Roomer”,因为这是我们分发证书上的名称),它不会查找具有该名称的证书,它会查找附加到该名称的私钥的证书。

所以我的同事创建了一个基于名为“Jorge Davila”(他的名字)的私钥的分配证书,尽管分配证书被命名为“iPhone Distribution:Roomer Inc.”。

当他在钥匙串访问中搜索“Roomer”时,正确的一个未显示在搜索结果中,因为该证书创建的密钥被命名为“Jorge Davila”而不是“Roomer”。因此,他出口了错误的证书,并没有意识到,因为有这个名字的其他人(有些已过期)。

这里有一个正确的外观:

这是一个比较微妙的问题,钥匙串访问的UX和事实的搜索工具不给你,你期望它的结果。我发布这个答案,希望其他人可能会觉得它有用。