证书身份'iPhone Developer:'在钥匙串中出现不止一次。代码签名工具要求只有一个

时间:2013-09-02 11:30:34

标签: ios objective-c xcode provisioning-profile

好的,我完全把头发拉出来了。

早在7月份,我创建了一个配置文件,以便我可以在iPad上进行测试。

然后在8月底我尝试将我的第一个应用程序提交到iTunes Store。这个过程是一场彻头彻尾的噩梦,我挣扎着。很多。最后,我找到了一个教程,其中包含相对较新的信息,只有逐步跟随它才能真正实现这一目标。不幸的是,结果是我创建了一个新的配置文件。

现在,当我尝试在iPad上测试时,我在Xcode中收到以下错误:

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

我检查了钥匙串,确定有两个配置文件用于开发,一个来自七月,一个我过去常常提交到iTunes Store八月。

现在我要做的就是摆脱旧的,然后将我的iPad连接到新的iPad。我可以摆脱旧的一个,但我无法将我的iPad连接到新的,它坚持使用旧的配置文件,甚至在我删除它后重新将它连接到钥匙串。

任何人都可以告诉我:

如何将iPad连接到新的配置文件?

虽然我们在这里,但任何人都可以阐明为什么整个过程如此复杂和困难?考虑到Apples界面的设计非常好且流畅,这种注册证书并将其应用于不同设备和应用程序的过程似乎是倒退的。我最初怀疑这只是我,但谷歌搜索这些错误信息表明,有许多人在这个过程中的各个方面都在苦苦挣扎。

2 个答案:

答案 0 :(得分:4)

这与Xcode无关,也与钥匙串无关。

  1. 打开钥匙串。
  2. 查找与您的配置文件相关联的签名证书。
  3. 删除一个。您可能希望保留较新的,请查看到期日期并删除首先到期的日期。
  4. 重启Xcode
  5. 如果配置文件与新证书无关,则可能需要更新配置文件,但它不会像创建新证书那样痛苦。

    以下是Xcode代码签名工作原理的概述。它有点多,但会解释您的配置有什么问题,以及如何解决它。

    • 该机制有三个部分可确保您就是您所说的人,并允许您的应用程序在其所需的位置运行。

      1. 你有一对,一个公开,一个私有。您的公钥与您的私钥相匹配,私钥可识别您的身份。
      2. 您的密钥用于生成证书。通常,您将在App Store或通过Ad Hoc分发获得一个用于开发的证书和一个用于分发的证书。这些证书允许您配置您的应用程序。
      3. 每个证书用于生成配置文件。必须将配置文件附加到开发或分发认证。分发配置文件可以在App Store上运行,也可以包含可以运行使用该配置文件签名的应用程序的设备ID列表。
    • 如果您的证书已过期,则使用该证书创建的配置文件将无效。在这种情况下,请替换证书和配置文件。从Keychain Access生成证书签名请求(CSR)并将其上载到开发人员门户。

    • 如果您的钥匙串中有多个证书,Xcode将不知道使用哪个证书。如果您续订证书而不删除旧证书,则可能会发生这种情况。 (如果您导出了开发人员资料,然后稍后导入,也可能会发生这种情况。您的旧证书将继续使用。)

    • 如果您的配置文件已过期或无效,则可以在开发人员门户中续订,而无需生成新的CSR。您只需将其附加到现有的有效证书即可。

    如果不移动请求证书的原始密钥对,则无法将证书从一台计算机转移到另一台计算机。从Keychain导出证书也将导出密钥。

答案 1 :(得分:0)

删除旧版本,然后使用new开始构建。 您还可以尝试另外一种方法,使用要在目标和项目构建设置中运行的配置文件设置代码签名标识。 希望它会对你有所帮助。 否则你必须删除旧的。