我丢失了我的公钥。我可以从私钥中恢复吗?

时间:2013-05-30 22:46:46

标签: ios iphone macos openssl keychain

我为iOS / OSX开发创建了密钥对+签名证书。在某个地方,我丢失了与我的私钥一起使用的公钥。也许是因为Keychain Access没有将私钥和公钥组合在一起,就像它与证书和私钥一样(这太刺激了!为什么(不)这样做!)

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

我最终想出了这一点,几天之后我的答案会更正,除非有人在答案中添加了新内容。

1 个答案:

答案 0 :(得分:55)

我记得模糊地能够在.pem文件上使用openssl这样做,这就是我的方向。

  • 在Keychain Access中,导出私钥,例如private.p12。是否应用密码。
  • 将其转换为.pem:openssl pkcs12 -in private.p12 -out private.pem。输入上一步的密码。您被迫将密码应用于.pem。
  • 提取公开部分:openssl rsa -in private.pem -pubout > public.pem。输入上一步的密码。
  • 导入Keychain Access:security import public.pem -k login.keychain。如果您没有指定钥匙串,则导入似乎已完成,但我无法找到该项目的放置位置。
  • 在Keychain Access中,查看登录钥匙串中的"导入的公钥"。重命名并移动到所需位置。
  • 自行清理,特别是没有密码或密码不佳的.p12和.pem私钥。