【问题标题】:Xcode could not find a valid private certificate/valid key-pair for this profile in your keychain [duplicate]Xcode 在您的钥匙串中找不到此配置文件的有效私有证书/有效密钥对 [重复]
【发布时间】:2023-04-06 15:24:02
【问题描述】:

可能重复:
Xcode - iPhone - profile doesn’t match any valid certificate-/private-key pair in the default keychain

我在安装由其他开发人员创建的配置文件时遇到问题。

  1. 开发证书已存在
  2. 我正在开发的应用有一个与证书关联的配置文件
  3. 我的设备 UUID 已添加
  4. 该应用的 AppID 已存在
  5. 存在开发配置文件,带有我的 UUID

当我下载证书和配置文件时,我在 Organizer 中收到错误:

Xcode could not find a valid private certificate/valid key-pair for this profile in your keychain

我该如何解决?

【问题讨论】:

  • 您已在钥匙串中安装了证书?
  • 我双击证书,它把它放在我钥匙串的“登录”中
  • (评论):这为我解决了 - 只需双击 .mobileprovision

标签: iphone objective-c cocoa-touch xcode provisioning


【解决方案1】:

您还需要申请证书时使用的私钥。

私钥用于对您使用该开发者身份编译的每个设备二进制文件进行签名。您下载和导入的证书基本上只是您的私钥上的一个印章,上面写着“允许使用此密钥签名的代码在设备上运行”。

让其他开发人员导出生成原始证书签名请求时使用的密钥,然后将它们导入您的计算机上。

在钥匙串中查看密钥是否与证书正确配对:

当一切都正确就位后,您应该会在证书上看到一个小三角形,让您可以看到密钥(反之亦然,在密钥页面上您应该看到密钥下的证书)。否则关系不正确,在导入期间无法被 Keychain 识别(在某些情况下,我在导入更新的证书而过期的证书仍在钥匙串中时看到了这种情况)。

我最近试图将 iOS 开发者证书的公钥/私钥对移动到另一台机器上。使用钥匙串访问将公共文件导出到 .pem,将私有文件导出到受密码保护的 .p12。

在另一台机器上 Keychain Access 不会导入它们。解决方案是旧的命令行:

security import ios_priv.p12 -k ~/Library/Keychains/login.keychain 
security import ios_pub.pem -k ~/Library/Keychains/login.keychain

如果您在传输证书密钥时遇到问题,请尝试此操作。


编辑以在下面回复@baudot 的评论。(不适合评论)

确保您的钥匙串中还有 Apple Developer Relations Root CA 证书。那就是用来验证证书的。

您也可以选择重新开始。只需从您的钥匙串中删除密钥和证书,在 ADC 门户上撤销它们并删除其关联的配置文件。

删除所有内容后,您可以生成新的密钥对和相关的证书签名请求。然后确保导出密钥并将它们存放在一个好的地方以备将来使用。

然后您转到 ADC 门户,上传您的新证书签名请求,生成新的配置文件,一切顺利。

唯一不可替代的是您的 ADC 帐户。其余的都可以恢复或重新创建。

我还建议您使用 Xcode 中内置的新奇的自动配置。这样可以省去下载和导入配置文件的麻烦。它只是将您现有的与 ADC 同步。

【讨论】:

  • 我正在努力解决这个问题,并查看我的硬盘驱动器,发现我有不少于四个私钥,其中任何一个都可能是我最初用来签名的那个,并且所有其中 KeyChain Access 似乎已经安装。它仍然显示此错误。
  • 上面的关键是“生成新的配置文件”。我发现“续订”不起作用。
  • 我第二次重新开始!我尝试了很多东西,但一旦我重新开始,一切都奏效了。
  • 非常好的答案,所有的困惑都消除了。尤其是“编辑”。
  • 这确实让我在别处寻找。在面对这个问题很长一段时间后,我最终从备份中打开了我的“DeveloperProfile.developerprofile”。一旦 XCode 在组织者中导入这个,有效的密钥签名身份问题就消失了。
【解决方案2】:

这发生在我身上,因为我将配置文件放到了 Xcode Organizer 中设备的 Provisioning Profiles 部分,但没有放到 Library 的 Provisioning Profiles 部分。一旦我把它也放在那里,警告就在设备部分消失了。

希望这可以帮助任何人......

【讨论】:

  • 我为解决我的问题所做的是删除并重新安装所有证书。
  • 也为我工作。谢谢马修!
  • @Mathieu,这就像一个魅力 - 谢谢!
  • 以类似的方式,我刚刚去了图书馆 | XCode Organizer 中的 Provisioning Profiles,选中 Automatic Provisioning,然后点击 Refresh。
【解决方案3】:

当证书OK后,重启Xcode帮助它找到。

【讨论】:

    【解决方案4】:

    我遇到了类似的问题。一种解决方案是从您的钥匙串中删除证书并请求一个新证书。苹果在这里有一个非常详细的演练:

    technotes

    【讨论】:

      【解决方案5】:

      我的证书过期后我遇到了这个问题,并且确定密钥都很好并且在正确的位置。我缺少的步骤是删除配置门户中的配置文件并重新创建它们。不要相信那个“更新”链接——它看起来很诱人,但它对我不起作用!

      因此,为了重新开始,您不仅需要从 Keychain 中删除密钥和证书,还需要擦除 Provisioning 下的 Development 和 Distribution 选项卡的内容。

      【讨论】:

        【解决方案6】:

        我在 10.6、Xcode 4.2 上也遇到过这个问题。在尝试了许多其他事情之后,我终于退出了 Xcode 并重新启动它。然后错误消息消失了。有图了。

        【讨论】:

          【解决方案7】:

          我只能通过使用 Xcode -> Organizer -> Developer Profile 并点击 Export 在右窗格的底部。这将保存一个合并的.developerprofile 文件,您只需在目标机器上打开/导入该文件。

          免责声明:这可能不是海报最初打算实现的目标。但是,我无法以任何其他方式在我的机器之间成功移动 private+public+cert。

          【讨论】:

          • 这对我有用,还包括私钥。
          【解决方案8】:

          您必须在 iOS 配置门户中编辑您的配置文件。选择“编辑”按钮,然后选择“修改”。输入所需信息(您的姓名、设备、应用程序 ID)。

          当系统显示配置文件为“活动”时,请转到 iOS 配置门户的证书部分并检查您的开发证书。它应该在“Provisioning Profile”条目中列出您的配置文件。

          之后,您可以下载配置文件并将其放入 Xcode。

          【讨论】:

            【解决方案9】:

            如果您的旧 Mac 无法访问,但您有 ssh 访问权限(例如在很远很远的办公室立方体中打开电源),那么有一个解决方案。您可以使用命令行简单地将钥匙串从旧机器复制到新机器:

            scp user@oldmac:Library/Keychains/login.keychain ~/Downloads/oldmac.keychain
            --or-- ssh oldmac; cp Library/Keychains/login.keychain ~/Dropbox/oldmac.keychain
            

            在新 Mac 上,打开 Keychain Access。转到 File -> Add Keychain 并选择 Downloads/oldmac.keychain

            然后只需将必要的公钥从 oldmac 钥匙串复制到默认的“登录”钥匙串。

            【讨论】:

              【解决方案10】:

              刚刚遇到这个问题。

              只需点击底部工具栏上的“刷新”,XCode 4 就会为您下载并安装所有内容。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2011-07-20
                • 1970-01-01
                • 2012-09-20
                • 1970-01-01
                • 2013-05-12
                • 2013-10-03
                相关资源
                最近更新 更多