9

我有一个从 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 无风险地送给我的朋友吗?

4

1 回答 1

20

根据您的文件名,您可能拥有 PGP 密钥。那是对的吗?

这些也可以与 PGP 一起使用,但对于非 PGP 密钥,我将使用以下命令提取公钥:

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

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

如果您使用的是 Windows 并且上面的命令被卡住,请尝试winpty在之前添加openssl

winpty openssl pkcs12 -in mykeystore.p12 -clcerts -nokeys -out mycert.pem

公钥和证书通常可以毫无问题地自由发放。你显然不想给出私钥,但公共部分很好。

不过需要注意的一件事...大多数时候,您想提供证书,而不仅仅是密钥本身。证书(从上面的第一个命令获得)包含公钥,并包含将该密钥与特定身份相关联的人的签名。

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

如果您只是将您的公钥通过电子邮件发送给您的朋友,那么有人可能会拦截公钥并将他们自己的密钥放入电子邮件中,然后再发送给您的朋友。当他们有别人的钥匙时,他们会错误地认为他们有你的钥匙。如果他们试图用它加密,那个人将能够解码一切。

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

于 2013-08-15T01:45:12.390 回答