37

我需要从文件中提取公钥 (RSA) *.cer。我希望提取密钥并将其存储在一个.pem文件中,这样我就可以使用它的值来加密使用jsencrypt的值。

以下命令将 a 转换.cer.pem

openssl x509 -inform der -in certificate.cer -out certificate.pem

然而,它不会生成带有公钥的文件,而是生成带有文件内容的*.cer文件。

-----BEGIN CERTIFICATE-----
MIICPDCCAamgAwIBAg............
*lots of extra contents*
-----END CERTIFICATE-----

我应该使用什么命令来提取公钥并将其存储在.pem文件中?

4

2 回答 2

81

使用此命令,我能够使用.pem公钥的内容生成。

openssl x509 -inform der -in certificate.cer -pubkey -noout > certificate_publickey.pem

产生:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsM+whXrxmbCkPfkwY2EehYpIp
*blah blah blah blah*
-----END PUBLIC KEY-----
于 2015-01-21T05:22:11.420 回答
2

PowerShell的解决方案:

$certFile = "[path to .cer file]"
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($certFile)
$cer.PublicKey.Key.ToXmlString($false)

来自 C# 的解决方案:

string certificate = @"<PATH TO .CER>"; 
X509Certificate2 cert = new X509Certificate2(certificate); 
string xml = cert.GetRSAPublicKey().ToXmlString(false);
于 2021-04-12T20:30:51.517 回答