从p12文件导出公钥

bas*_*tey 5 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
Run Code Online (Sandbox Code Playgroud)

现在我有pub.pem包含这样的东西:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9......
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

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

gtr*_*rig 16

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

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

openssl pkcs12 -in mykeystore.p12 -clcerts -nokeys -out mycert.pem
openssl x509 -pubkey -in mycert.pem -noout > mypubkey.pem
Run Code Online (Sandbox Code Playgroud)

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

公钥和证书通常可以自由地给出而没有问题.你显然不想透露私钥,但公共部分没问题.

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

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

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

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