【问题标题】:Xcode -How to add a private key to Development Certificate if it's created using the Revoke buttonXcode - 如果使用 Revoke 按钮创建,如何将私钥添加到开发证书
【发布时间】:2020-02-27 03:53:08
【问题描述】:

我误按了Revoke按钮。:

我去了developer.apple > Certificates 我下载了通过按下Revoke 按钮创建的新Development Certificate。之后我得到的错误之一是

错误的第二部分说证书需要private key(橙色)。

Xcode > Preferences > Accounts > App ID > Team > plus sign 它说Development Certificate 的到期时间是10/30/20, 12:04 AM

当我在钥匙串中查看具有该到期日期的证书时,它的左侧没有箭头来切换嵌套的私钥:

如何将私钥添加到使用撤销按钮创建的开发证书中?

顺便说一句,在按下Revoke 按钮后创建的分发证书确实附有一个私钥。

【问题讨论】:

  • “如何将私钥添加到使用撤销按钮创建的开发证书中” 究竟担心什么?与分发证书不同,您可以拥有任意数量的开发证书。他们不会被撤销。只需向 Xcode 索要一个新的。 (当然,如果您的钥匙链被软管损坏,就像我们在其他地方建立的那样,那可能无法正常工作。)
  • 哦,好吧,我认为私钥对于开发人员来说也是必需的。感谢您的帮助!你能把它作为答案发布,这样下一个人就不会为了弄清楚它在哪里而绞尽脑汁吗?:)
  • 私钥是必需的,但是当您要求 Xcode 为您制作开发证书时,它会完成所有工作,与钥匙串交谈以制作私钥并将证书下载到钥匙串中。但正如我所说,如果你的钥匙链被软管,那可能行不通。你试过了吗?
  • @matt 在 Xcode 11.2 中,开发者 cer 必须拥有私钥。即使 Xcode 出于任何原因通过 Revoke 按钮生成它,iPhone Developer cer 私钥丢失并导致 2 个错误。我不得不从开发门户和钥匙串中删除 iPhone 开发者证书(由撤销按钮创建)。然后我必须自己手动创建它并执行所有必要的步骤来添加到门户。 Apple 中的某个人犯了一个错误,因为在 Xcode 11.2 中,Revoke 按钮 iPhone 开发人员证书没有用它创建密钥。可能 Xcode 11.2.1 及以上版本不同。
  • @matt btw 在按下撤销按钮时,iPhone 分发证书确实获得了一个私钥,并且工作正常。很奇怪。

标签: xcode code-signing p12


【解决方案1】:

不幸的是,没有办法让它工作。我在莫哈韦沙漠:

  1. 我在外部硬盘驱动器上安装了 Big Sur 并从那里启动它。
  2. 安装 Xcode 12。
  3. 创建了空项目
  4. 我也是付费团队的成员,但这是不必要的。
  5. 签名和创建证书顺利,没有错误
  6. 我在 iCloud 的系统偏好设置中选择了钥匙串访问。
  7. 我将我的证书和密钥导出到从 Mojave 可见的外部驱动器分区。
  8. 重新启动并启动 mojave
  9. 导入的证书

这对付费帐户和未付费帐户均无效。我的证书被标记为不可信,Xcode 11.2 仍然存在修复问题。我收到了 8 封电子邮件,说我的证书在此过程中被吊销。 所以这可能是 Mojave 的想法,因为 Apple 认为系统不安全。这很有趣,因为昨天我为 Mojave 安装了最新的安全更新(之后我丢失了我的 Mac Mini 内置扬声器:() 这看起来像是 Apple 方面的严重错误,我通过反馈助手报告了它,但我怀疑他们是否会修复它,所以现在我不得不告别 Apple 平台的编码。

【讨论】:

  • 你是说答案不起作用?这对我来说可以。我不止一次遇到这个问题,这就是我用来让它工作的。有 2 人投了赞成票,所以它一定也对他们有用。也许你错过了一步。我正在使用 Catalina 10.15.7,但当时我添加了答案,我相信我在 Mojave 上,但我不能 100% 确定这一点。
  • 我想我知道你的问题可能是什么。这实际上发生在我身上,我的钥匙链被水洗了。 cmets 中的@matt 引起了我的注意。我问的是另一个问题。基本上我不得不再次重新创建我的钥匙串。调查一下,看看会发生什么。我会帮助你,但我不记得我采取的步骤。
  • @LanceSamaria 我很高兴它对你有用,但显然这不是广泛有效的解决方案,因为对我和上帝来说,只有上帝知道这没有多少其他人。我用谷歌搜索了“钥匙串软管”,但我不确定重新创建钥匙串是否有帮助,因为我的钥匙串工作正常,所有密码都在那里并且工作。苹果方面肯定有问题。生活还在继续,我接受了系统故障。
  • 你检查过你的钥匙链是不是被水洗了?这意味着您必须删除然后重新安装整个钥匙串。谷歌它
  • 正如我所说,我的钥匙串已经启动并正在运行:)
【解决方案2】:

当您按下Revoke 按钮时,您会收到一个新的iPhone Distribution certificate 和一个新的iPhone Developer certificate。您可以在 developer.apple > certificates 的开发人员门户中查看这些证书。这些证书也将在您的钥匙串中。您使用证书到期日期来查看哪些证书对应于什么。

按下撤销按钮的问题是你会得到一个iPhone Distribution certificate 和一个private key,但就iPhone Developer certificate不会有一个私钥。

如果你查看你的钥匙串,你会在下面看到这张照片。请注意,iPhone Distribution certificate 旁边有一个灰色箭头,但 iPhone Developer certificate 没有:

这将导致以下2个错误:

它会导致一个循环,您再次按下Revoke 按钮并最终出现相同的 2 个错误。我不知道为什么苹果会这样做,但肯定有人犯了错误。

当您转到Keychain > login > My Certificates 时,您只会看到具有私钥的证书(灰色箭头表示)。由于按下撤销按钮的iPhone Developer certificate 没有密钥,因此它不会在那里。 According to this 你需要那个密钥,否则你会得到错误:

如果您的 iOS 开发人员和分发证书未出现在 “我的证书”,则它们未正确配置为在 你的 Mac。请注意,“证书” 是所有 您的 Mac 持有的证书,而 "My Certificates" 是子集 证书对您的 Mac 实际使用有效 - 证书 仅出现在“证书”中是不够的。

如果证书不在我的证书中,那么这很可能 因为您没有该证书的正确密钥 那个麦克。您将需要找到为此制作的私钥 证书(即,来自请求 证书或备份服务器)。

只要它们确实出现在“我的证书”中,那么它们的密钥就在那里

由于iPhone Developer certificate 不会出现在我的证书 中,修复方法是在您按下Revoke 按钮后,删除它从BOTH 生成的iPhone Developer certificate > 开发者门户developer.apple > certificates AND keychain从钥匙串中删除它非常重要!使用到期日期来找到它。请保留iPhone Distribution Certificate,因为它应该可以正常工作并且有一个密钥(由灰色箭头指示)。

BOTH 两个位置删除它后,您可以按照 these directions 自己手动生成 developer certificate

手动生成代码签名证书

1- 打开你的Keychain Access

2- 在 Apple 标志旁边的左上角选择 Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority..

3- 填写用户电子邮件地址(只用你的)和通用名(只用你的名字),然后选择保存到磁盘。我选择了Let me specify key pair information(也许没有必要),但在下一个屏幕上只需使用Key Size: 2048 bitsalgorithm: RSA。点击 Continue 并将生成的 certSigningRequest 文件保存到您的桌面。

4- 转到https://developer.apple.com 并登录您的帐户。

5- 从左侧边栏中选择证书、ID 和配置文件。

6- 转到证书并单击右上角的 + 按钮。

7- 选择 iOS App Development 并点击 Continue。

8- 在下一页上,您会看到创建 certSigningRequest 文件的说明。点击继续。

9- 将创建的 certSigningRequest(从第 3 步开始,保存到您的桌面)上传到表单,然后单击继续。它将为您生成代码签名证书。

10- 下载证书并双击安装。安装后,它将被添加到您的钥匙串访问应用程序中。假设它保存到您的下载文件夹中,您可以进入并双击它。

完成这些步骤后,两个错误都应该消失。

如果您仍然有错误,请查看门户中的证书developer.apple > certificateskeychain > My Certificates。如果门户中有任何内容但My Certificates 中没有,那么您需要找到它的钥匙串访问权限(查看钥匙串> 证书),将其删除,然后从门户中删除。

我花了一段时间才弄清楚这一点,但到期日期是找到混乱证书的关键。

【讨论】:

  • 您的答案的问题是,当您的开发者帐户未付费时,您无法访问 developer.apple.com 并执行此操作,因为没有“证书、ID 和配置文件”选项侧边栏。
  • 如果您有开发者帐户,这可以正常工作。我从来没有在没有开发者帐户的情况下尝试过,所以我不能谈论它。对不起。
  • 如果您为没有开发者帐户的人找到答案,请发布。
猜你喜欢
  • 2013-05-09
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 2023-03-21
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
相关资源
最近更新 更多