未安装分发证书/私钥


104

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

“我的名字”具有一个iOS分发证书,但未安装其私钥。

我不知道为什么未安装此“私钥”,但是分发证书可能是在另一台计算机上创建的。任何状况之下:

检索丢失的私钥并进行安装的最简单方法是什么?为了使事情起作用。

Answers:


83

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

因此,要在此计算机上使用此分发证书,必须找到计算机,打开“钥匙串访问”,找到并导出私钥,将其邮寄或以其他方式将其发送到此计算机,然后将其导入到此计算机的钥匙串中。

如果您进入Xcode中的“帐户”首选项窗格,然后双击您的团队,则会看到一个对话框,可以为您提供帮助。如果看到分配证书,并且显示“不在钥匙串中”,则可以按住Control键并单击该证书以获取菜单项,该菜单项可让您向创建证书的任何人发送电子邮件,并要求他们将其发送给您。该人可以使用相同的导入来选择“导出证书”,并可以通过电子邮件将导出的证书发送给您。

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


1
根据您的建议,我的第一次审判无效。很可能是因为我做错了。我有一个问题是,在进入创建证书的钥匙串访问时,如何找到私钥?似乎在某些地方,“钥匙串访问”显示了数以千计的对象,都被称为同一名称。因此,我完全不确定自己应该做的那部分。
米歇尔

34
好吧,给我自己发邮件问我现在要问的问题不太可能是有效的:)
米歇尔(Michel)

1
但是我仍然认为您的回答使我走上了正确的道路,因此我需要进一步研究。
米歇尔

我终于找到解决这个问题的方法。但不幸的是,我还没有完成整个签单业务。我发表了一个不同的帖子,并提出了一个单独的问题:stackoverflow.com/questions/47258499/…–
Michel Michel

感谢这个@matt!就我而言,我使用在设备上创建的CSR创建了iOS分发证书,但是当我将其安装在钥匙串中时,没有与该证书绑定的私钥。我可以编译,但是我不知道私钥在哪里,所以我无法将p12文件提供给队友。尽管情况有所不同,但是由于您对转到“ Xcode帐户”窗格的建议,我能够将其导出到p12。:)现在,一切都很好,但是我只是想知道隐藏的私钥到底在哪里,因为私钥没有与证书一起显示在钥匙串中。
卡伦·安妮

292

最新(2020年7月)(xcode 10-12)

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

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

旧答案

步骤1:-xcode->产品->存档->单击管理证书 在此处输入图片说明

步骤2:-添加ios发行版 在此处输入图片说明


7
这是行不通的,因为当我单击加号时没有任何反应。我没有“ iOS发行版”的选择。
arnoldbird

2
如果我通过Xcode>首选项>帐户访问“管理证书”,则加号处于活动状态,如上面的步骤2所示。
arnoldbird '18

12
这将是最好的答案
kishorekumaru

2
哇:-D 为我修复。要么这不可能,要么Xcode不应打扰您。
Joshua R.

3
当前在Xcode 10.3中Xcode-首选项-帐户-管理证书
Anton,

27

该答案适用于“一个人”团队,可以快速解决此问题,而无需阅读过多有关“团队”的信息

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


11

编辑:我以为另一台计算机已死,所以我正在解决我的答案:

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

我更喜欢使用iCloud的方式,备份到iCloud并将其放入新计算机中。

如果由于某种原因不能执行此操作,则可以在Apple开发人员站点中吊销证书,然后让Xcode为您创建一个新证书,它还将创建一个新的新私钥并将其存储在您的Keychain中,确保以您喜欢的方式备份它


2
那是可怕的建议。
马特

4
据我所知,吊销证书时没有发生任何不好的事情。
Yitzchak

是; 他可以将私钥从计算机1导出到计算机2。您的建议将导致分发证书停止在另一台计算机上工作!为什么是一件好事?
马特

2
我以为另一台计算机

7

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

现在一切都会好起来,不要忘记重启Xcode !!!


1
对我来说,错误仍然出现,必须单击加号以进行更新和运行
Zack

7

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

这项工作对我来说。


5

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


4

仅对于经历此问题的其他任何人,上面的答案都是正确的,但是仍然可能有些混乱,特别是如果您有多个证书。这些是我采取的步骤:

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

2)单击每个IOS分发条目的向右箭头以显示证书,并找到具有正确日期的证书,然后通过右键单击并选择导出将其导出。

3)然后只需将其导入新计算机的钥匙串中,至少使用XCode 9.3即可立即识别出该错误并更正错误,因此您现在可以上传成就。


谢谢!我要补充一点,在默认视图中您看不到向左箭头,该箭头使您可以扩展密钥以显示证书。您需要在“类别”面板中选择“键”。只有这样,您才能选择证书并将其导出。如果改为导出私钥,则在另一台计算机上导入私钥时会出现错误。
Clafou

4

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


2

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.