钥匙串上的分发证书中缺少私钥


170

我遇到以下问题,但找不到任何地方的解决方案。基本上,我们有一个公司开发人员帐户(而非企业帐户),因此为了提交我们的应用程序,我要求我们的团队负责人向我发送分发证书,并创建并向我发送分发设置配置文件。

使用开发人员配置文件,一切正常,但是当我安装证书和配置文件时,我没有在Xcode上看到分发配置文件,并且在钥匙串的dist证书下也没有私钥。

有谁知道如何解决这个问题?我在diff地方读到,我需要吊销证书并创建一个新证书,但是由于公司中有很多应用程序,所以我不能真正做到这一点,并且我不能为所有人吊销证书。


2
有时缺少私钥,因为我们试图使用在任何其他计算机上创建的.CSR创建证书。因此,请确保您的CSR文件也应该在尝试创建和安装证书的同一台计算机上创建
..或者

2
就我而言,我的钥匙串中有两个相同的签名证书...它解决了删除其中一个的问题...以防万一...
juanram0n

Answers:


167

在此处输入图片说明嗯,这是一个常见问题,解决方案很简单:

曾经创建过开发人员凭据的人最初需要转到计算机上的钥匙串,然后右键单击私有和公共密钥,然后将密钥导出到文件中。然后,您只需将该文件下载到计算机上并打开,它将被添加到您的钥匙串中。

您需要同时具有私钥(.pem文件)和供应配置文件的证书。


36
更具体地说,它是您需要(导出)的.p12文件
mkral 2012年

7
@Nirma如果我们无法访问最初创建了开发人员凭据的计算机,该怎么办。
Nishad Arora '18年

@NishadArora您必须创建一个新密钥才能使用。没有私钥,就无法使用它。AFAIK
约书亚·品特

2
@Nirma如何创建新的一个
茂朱

70

只要您仍然可以访问用于生成原始分发证书的mac,它就非常简单。

只需使用该Mac的Keychain Access应用程序即可导出证书和私钥。使用shift或command选择两者,然后单击鼠标右键以导出到.p12文件。

附上截图以使其非常清晰。

在您的Mac上,导入该.p12文件,您就可以使用了(只需确保您具有有效的配置文件)。

只要选择出口


55

要添加其他人的答案,如果您再也无法访问该私钥,则可以很容易地进行备份和运行:

  1. 在设置门户中撤消您的活动证书
  2. 创建新的开发人员证书(钥匙串访问/.../对csr的请求...等)
  3. 下载并安装新证书
  4. 为现有应用程序ID创建新的配置文件(在配置门户上)
  5. 下载并安装新的配置文件,并在构建中通过设置设置适当的代码签名身份

13
在我公司,这里总是一片混乱,没人知道在哪台计算机上创建了特定证书。最好撤消并重新创建
2014年

1
@ user2387149六年后,我在这里建议CI / CD进行此类操作,而不必通过xCode进行分发。
Edgar Salazar

如果我已经下载了发行证书,则我吊销了它,然后再次请求它。我应该删除旧的发行证书吗?
kafinsalim

14

从KeyChain删除现有的文件,获取.p12文件并将其添加到创建证书的Mac中。

要从源Mac获得.p12,请转到KeyChain,展开证书,选择两者并导出2个项目。这会将.p12文件保存在您的位置:

在此处输入图片说明



6

更换不是发行人证书的原始Mac之后,您将丢失私钥,只需删除原始证书并重新创建一个对我有用的新证书〜


5

当我尝试上传iOS版本以测试飞行时,出现了错误。

"Missing privacy key"

在此处输入图片说明

只需2个步骤即可修复此错误。

  1. 从developer.apple.com删除旧证书
  2. 从Xcode或developer.apple.com创建新证书

我的问题已解决(我正在使用Xcode 9.4.1)。

请检查,Xcode创建了新证书。

在此处输入图片说明


5

对于担心重新创建AppStore发行证书的人,Apple 文档说:

重要提示:重新创建开发或发行证书不会影响您已提交到App Store的应用程序,也不会影响您更新它们的能力。

但这会影响Apple Developer Enterprise生态系统的应用程序。


4
如果您有企业帐户,它会起作用!
MobileMon

通过“企业生态系统”。您是在说如果您在一家大公司工作,而100个开发人员拥有该特定应用程序的私钥?
petrosmm

2

在菜单> Visual Studio(mac)>首选项>发布> Apple开发者帐户> [选择您的Apple ID]>查看详细信息>创建证书

要删除未使用/无效的证书,请访问网站:https : //developer.apple.com/account/resources/certificates/list

删除那里不需要的证书

接下来是创建应用程序ID(标识符),请转到网站:https :
//developer.apple.com/account/resources/identifiers/list

接下来,转到网站以创建配置文件:https :
//developer.apple.com/account/resources/profiles/add

使用证书绑定您的应用ID。

接下来是下载配置文件:
在Mac上>在菜单> Visual Studio(mac)>首选项>发布> Apple开发者帐户> [选择您的Apple ID]>查看详细信息>下载所有配置文件


1

我在Apple的开发人员网站上访问了该证书,下载后我将其打开。同样,在开放时,我有一个小窗口,询问是否要将证书添加到钥匙串中。只需点击“添加”,“丢失私钥”错误就消失了。


1

Xcode无法创建新的分发证书后发生了这种情况(“缺少私钥。”)-发生未知错误。

然后,我努力获取私钥或生成新证书。从Xcode的证书管理器中,我收到奇怪的错误,例如“您输入的密码错误”。但这甚至没有问我任何密码。

帮助我的是:

  1. 在developer.apple.com上撤销所有无效的发行证书
  2. 重新启动我的Mac

之后,Xcode能够创建新的分发证书,并且没有私钥丢失。

获得的经验教训:与Windows一样,重新启动Mac;)


0

检查您是否正在使用“登录”来添加证书,如果您在左上角的“系统”中签入,那么我们将无法看到它。

因此,将.cer拖放到登录名中,然后检查您是否可以获取私钥。


0

只是为了阐明这一点。

从钥匙串删除我的p12证书后。我从Apple开发人员门户网站重新下载了自己的证书。

我只能下载证书。但是要签名,您还需要私钥。所以你要么:

  • 从钥匙串中导出私钥和证书以获取它。

  • 上载证书签名请求并生成新证书

该证书本身对于签名没有任何价值。我的猜测是,私钥是在您“向证书颁发机构请求证书”时通过钥匙串创建的,但是直到您添加其绑定证书后才会显示给您。

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.