从p12文件导出公钥

时间:2013-08-14 11:31:10

标签: security openssl pem

我有一个从Firefox浏览器导出的p12文件。现在我想提取公钥以将它们交给朋友(而不是整个p12文件)。

我使用OpenSSL-Windows32并将p12转换为pem,之后我尝试从pem中导出公钥。

这就是我使用的语法:

openssl pkcs12 -in pgp.p12 -clcerts -out pgp.pem
openssl pkey -in pgp.pem -pubout -out pub.pem

现在我的pub.pem包含这样的内容:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9......
-----END PUBLIC KEY-----

这是导出pub文件的正确方法吗?我可以毫无风险地将pgp.pem交给我的朋友吗?

1 个答案:

答案 0 :(得分:16)

根据您的文件名,看起来您可能有一个PGP密钥。这是对的吗?

这些也适用于PGP,但对于非PGP密钥,我会使用这些命令提取公钥:

openssl pkcs12 -in mykeystore.p12 -clcerts -nokeys -out mycert.pem
openssl x509 -pubkey -in mycert.pem -noout > mypubkey.pem

-nokeys选项可防止输出私钥。

公钥和证书通常可以自由发布而不会出现问题。你显然不想透露私钥,但公共部分没问题。

有一点需要注意......但大部分时间,你想要发放证书,而不仅仅是密钥本身。证书(从上面的第一个命令获得)包含公钥,并包含将该密钥与特定身份相关联的人签名。

例如,Verisign将签署包含您的公钥的证书。然后,您可以将此证书交给您的朋友,因为他们信任Verisign,他们知道这确实是您的公钥。

如果您只是将公钥通过电子邮件发送给您的朋友,则有可能有人可能会拦截公钥并在将电子邮件发送给您的朋友之前将其自己的密钥放入电子邮件中。当他们有别人的钥匙时,他们会错误地认为他们有钥匙。如果他们试图用它加密,那个人就能解码所有东西。

因此,如果您不使用证书,至少通过电话或亲自确认密钥的哈希值来验证您的朋友是否获得了正确的密钥。