23

我为 iOS/OSX 开发创建了一个密钥对 + 签名证书。在此过程中,我丢失了与我的私钥一起使用的公钥。也许是因为 Keychain Access 没有将私钥和公钥分组在一起,就像它对证书和私钥所做的那样(这太烦人了!为什么(不)这样做!)

在钥匙串访问中,我仍然可以右键单击私钥->“请求证书”;但如果没有可用的公钥,我会收到错误“在钥匙串中找不到指定的项目”。我确定公钥是可以恢复的,但是如何恢复呢?显然,Keychain Access 不够聪明,无法自动完成。

我最终弄清楚了这一点,并会在几天后将我的答案标记为正确,除非有人在答案中添加了新内容。

4

1 回答 1

60

我模糊地记得能够在 .pem 文件上使用 openssl 来做到这一点,所以这就是我前进的方向。

  • 在 Keychain Access 中,将私钥导出为例如private.p12. 是否应用密码。
  • 将其转换为 .pem: openssl pkcs12 -in private.p12 -out private.pem。输入上一步的密码。您被迫对 .pem 应用密码。
  • 提取公共部分:openssl rsa -in private.pem -pubout > public.pem. 输入上一步的密码。
  • 导入钥匙串访问:security import public.pem -k login.keychain. 如果您不指定钥匙串,则导入似乎已完成,但我找不到该项目的放置位置。
  • 在 Keychain Access 中,在登录钥匙串中查找“Imported Public Key”。重命名它并移动到所需的位置。
  • 自己清理,尤其是那些没有密码或密码很差的 .p12 和 .pem 私钥。
于 2013-05-30T22:46:45.800 回答