【问题标题】:Distribution certificate / private key not installed未安装分发证书/私钥
【发布时间】:2018-04-25 16:33:06
【问题描述】:

使用 Xcode 9.1,在构建 iOS 应用程序后,我想将其存档并上传到 appStore 进行 beta 测试。 但是点击按钮Upload to the App Store...并选择Automatically manage signing后出现以下问题:

“我的名字”有一个 iOS 分发证书,但它的私钥是 未安装。请联系此证书的创建者以获取私钥的副本。

我不知道为什么这个“未安装私钥”,但分发证书可能是在另一台计算机上创建的。无论如何:

找回丢失的私钥并安装它的最简单方法是什么?为了让事情顺利进行。

【问题讨论】:

    标签: ios xcode certificate keychain


    【解决方案1】:

    最新(2021 年 1 月)(Xcode 10 - 12)

    1. 转到 Xcode - 首选项 - 帐户 - 管理证书
    2. 点击左下角的+,然后点击Apple Distribution
    3. 稍等,然后单击完成

    就是这样。 您可能还想撤销 developer.apple.com 上的旧证书。

    旧答案

    第 1 步:Xcode -> 产品 -> 存档 -> 点击管理证书

    第 2 步:添加 iOS 分发版

    【讨论】:

    • 这不起作用,因为当我单击加号时没有任何反应。我没有选择“iOS 分发”。
    • 如果我通过 Xcode > Preferences > Accounts 访问管理证书,则加号是活动的,如上面的第 2 步所示。
    • 它对我有用,现在我有 2 个不同日期的证书、标识符和配置文件中的 iOS 分发。撤销之前的分发证书会影响现有应用吗?
    • 当我出现“您已经拥有当前的 IOS 分发证书或未决的证书请求”时,我该怎么办?谢谢
    • 目前在 Xcode 10.3 Xcode - 首选项 - 帐户 - 管理证书
    【解决方案2】:

    您只能拥有一个分发证书。它将 Apple 已知的公钥与位于某些计算机钥匙串中的私钥结合在一起。如果此分发证书是在另一台计算机上创建的,则私钥位于该计算机的钥匙串上。没有它,这个分发证书也不起作用。

    因此,要在这台计算机上使用此分发证书,您必须找到那台计算机,打开 Keychain Access,找到并导出私钥,邮寄或以其他方式将其发送到 这台 em> 电脑,并将其导入到这台电脑的钥匙串中。

    如果您进入 Xcode 中的 Accounts pref 窗格并双击您的团队,您将看到一个对话框,为您提供帮助。如果您看到您的分发证书并显示不在钥匙串中,您可以控制并单击该证书以获取一个菜单项,让您通过电子邮件向创建证书的人发送电子邮件并要求他们将其发送给您。该人可以使用相同的导入来选择导出证书,并可以通过电子邮件将导出的证书发送给您。

    无论哪种方式,私钥或导出的证书都将被加密。您需要知道密码才能使用它。

    【讨论】:

    • 我按照您的建议进行的第一次尝试没有奏效。很可能是因为我没有做对。我遇到的一个问题是,当转到创建证书的钥匙串访问时,如何找到私钥?似乎 Keychain Access 显示,在某些地方,数以万计的对象都被称为相同的名称。所以我完全不确定我是否做了我应该做的那部分。
    • 好吧,给自己发邮件问我现在问你的问题不太可能有效:)
    • 但我仍然认为你的回答让我走上了正轨,所以我需要深入挖掘一下。
    • 我从我最旧的笔记本中导出了认证文件,并重新启动了 XCode 以刷新钥匙串的更改
    • 是的!重新启动似乎对我有用。
    【解决方案3】:

    这个答案是为了让“One Man”团队快速解决这个问题,而无需阅读太多关于“团队”的信息

    第 1 步)转到网络浏览器,打开您的开发者帐户。转到证书、标识符和配置文件。选择证书/生产。您将看到那里列出的缺少私钥的证书。单击撤销。并按照说明删除此证书。 第2步)就是这样!返回 Xcode 以验证您的应用程序。它现在会要求您生成一个新证书。现在您可以愉快地上传您的应用了。

    【讨论】:

    • 对于丢失或无法访问私钥的人,例如我的情况,这是要走的路。
    • 对于由于MacOS中的GUI在导出时总是挂起而无法导出私有证书的人,这是要走的路。
    【解决方案4】:

    添加新的生产证书here,然后下载 .cer 文件并双击将其添加到 Keychain。

    现在一切都会好起来的,别忘了重启 Xcode!!!

    【讨论】:

    • 你的回答救了我。我做了所有的步骤,但没有工作。 XCode 不够聪明,无法知道您在没有退出并重新启动的情况下向钥匙串添加了新证书。
    • Restar Xcode 对我来说是关键...谢谢!
    【解决方案5】:

    编辑:我认为另一台计算机已经死了,所以我正在修复我的答案:

    您应该使用其私钥从第一台计算机导出证书并将其导入新计算机。

    我更喜欢 iCloud 的方式,备份到 iCloud 并在新电脑中获取。

    如果你因为某种原因做不到,你可以在 Apple 开发者网站上撤销证书,然后让 Xcode 为你创建一个新的,它还会创建一个新的私钥并将其存储在你的钥匙串,请务必以您喜欢的方式备份它

    【讨论】:

    • 这是个糟糕的建议。
    • 据我所知,吊销证书时不会发生任何不好的事情。你知道别的吗?
    • 是的;他可以将私钥从计算机1导出到计算机2。您的建议将导致分发证书在另一台计算机上停止工作!为什么是一件好事?
    • 我还以为另一台电脑死机了
    【解决方案6】:

    这里人们关于从计算机生成密钥的答案是准确的。但如果仍然失败,请在安装证书后尝试重新启动 Xcode

    【讨论】:

      【解决方案7】:

      撤销 developer.apple.com 的所有分发证书并在 Xcode 中验证您的应用程序,您可以在导出密钥以供进一步使用后创建新的分发证书。

      这对我有用。

      【讨论】:

        【解决方案8】:

        对于经历过这个的其他人来说,上面的答案是正确的,但它仍然可能有点令人困惑,特别是如果你有多个证书。这些是我采取的步骤:

        1. 首先记下实际分发证书中缺少其私钥的日期。然后转到另一台计算机上的钥匙串应用程序并在搜索栏中键入 iOS。它将显示您所有的 iOS 开发人员和分发密钥,因此您必须找到正确的。

        2. 单击每个 iOS Distribution 条目的右箭头以显示证书并找到具有正确日期的证书并通过右键单击并选择导出来导出该证书。

        3. 然后只需将其导入新计算机的钥匙串中,至少在 Xcode 9.3 中它会立即识别并纠正错误,以便您现在可以上传您的成果。

        【讨论】:

        • 谢谢!我要补充一点,在默认视图中,您看不到左箭头,该箭头可让您展开密钥以显示证书。您需要在 Category 面板中选择 Keys。只有这样您才能选择证书并将其导出。如果改为导出私钥,则在另一台计算机上导入时会出错。
        【解决方案9】:

        您是否在新计算机上使用证书。最简单的做法是吊销与该项目相关的先前证书。然后重新上传到商店。 Xcode 会生成一个新的。

        【讨论】:

          【解决方案10】:

          在我的情况下,Xcode 没有从钥匙串访问证书,我按照以下步骤操作:

          1. 从钥匙串中删除证书。
          2. 重启mac。
          3. 生成新证书。
          4. 安装新证书。
          5. 清理构建文件夹。
          6. 构建项目。
          7. 再次清理构建文件夹。
          8. 立即存档。 它的工作原理就是这样。

          【讨论】:

            【解决方案11】:

            我尝试了互联网上所有提到的解决方案,但没有在我的 Mac 上运行的解决方案,然后我从证书和标识符在苹果开发者网站上手动创建了一个配置文件。通过手动导入该文件应用程序成功上传到 appStore,请按照以下步骤操作

            在开发者网站上

            1-转到此链接https://developer.apple.com/account/resources/certificates

            2- 在配置文件部分使用应用程序包标识符创建新配置文件

            3-下载并保存在哪里

            在 Xcode 上

            1-转到签名和证书

            2-禁用自动管理签名

            3- 在其部分中选择配置文件

            4- 归档应用

            5-单击分发应用程序->ApStore 连接->上传->下一步-> 然后在下载时从 XXXX-app 部分选择配置文件显示在此部分中,现在上传它

            【讨论】:

              【解决方案12】:

              点击管理证书->Apple Distribution->完成

              【讨论】:

                【解决方案13】:

                在我的例子中,在撤销旧证书并创建新证书后,Xcode 显示相同的错误(我已经完成了干净的构建并删除了派生数据文件夹)。

                在这种情况下,请尝试手动管理签名。

                之后,检查第二个字段并设置适当的字段。

                注意:上传构建后,我需要等待 15 分钟才能在应用商店连接中看到我的构建。

                【讨论】:

                  【解决方案14】:

                  除了上面的答案, 如果您对此帐户具有管理员访问权限,请创建新证书并使用它来发布。我只是这样做了,它通过了。

                  1- 创建新的证书签名请求(KeyChain Access > Certificate Assistant)并保存到磁盘 https://help.apple.com/developer-account/#/devbfa00fef7

                  2- 登录到您的苹果开发者帐户 > 证书和标识符 > 点击 + 添加新证书)

                  3-上传您在步骤1中创建的签名证书,点击下一步并下载证书

                  4- 双击证书进行安装。确保它受信任并显示“此证书有效”。

                  5- 现在再次尝试存档并选择自动签名。

                  应该可以的。

                  【讨论】:

                    【解决方案15】:
                    1. 转到此链接https://developer.apple.com/account/resources/certificates/list

                    2. 在您的警报上传中找到证书名称,然后

                    3. 吊销证书

                    4. 如果您有证书,请再次下载
                    5. 再次上传 testflight

                    【讨论】:

                      【解决方案16】:

                      如果你被这个问题困住了。切换计算机后,无法将您的构建上传到 App Store。只需点击错误页面上的管理证书,左下角的+加号并创建一个新的分发证书。然后你就可以走了。

                      【讨论】:

                      • 假设您没有达到分发证书的限制 (3)。
                      【解决方案17】:

                      我在 xCode (v12.4) 中也面临同样的问题,并创建了另外两个分发证书,但对我没有任何帮助。

                      解决方案:重新启动 xCode 似乎对我有用。

                      【讨论】:

                        【解决方案18】:

                        只需点击“管理证书”->“+”->“iOS 分发”

                        【讨论】:

                          【解决方案19】:

                          我在使用 Xcode v11.3 时遇到了同样的问题

                          升级到 Xcode 11.6 为我解决了这个问题

                          【讨论】: