Encryption 如何使用OpenSSL从.cer中提取RSA公钥并将其存储在.pem中?

Encryption 如何使用OpenSSL从.cer中提取RSA公钥并将其存储在.pem中?,encryption,openssl,rsa,pem,cer,Encryption,Openssl,Rsa,Pem,Cer,我需要从*.cer文件中提取公钥(RSA)。我希望提取密钥并将其存储在.pem文件中,以便使用其值对值进行加密 以下命令将.cer转换为.pem: openssl x509 -inform der -in certificate.cer -out certificate.pem 但它不会生成一个带有公钥的文件,而是一个包含*.cer文件内容的文件 -----BEGIN CERTIFICATE----- MIICPDCCAamgAwIBAg............ *lots of extra

我需要从
*.cer
文件中提取公钥(RSA)。我希望提取密钥并将其存储在
.pem
文件中,以便使用其值对值进行加密

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

openssl x509 -inform der -in certificate.cer -out certificate.pem
但它不会生成一个带有公钥的文件,而是一个包含
*.cer
文件内容的文件

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

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

使用此命令,我能够生成带有公钥内容的
.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-----

PowerShell的解决方案:

$certFile = "[path to .cer file]"
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($certFile)
$cer.PublicKey.Key.ToXmlString($false)
来自C#的解决方案:

字符串证书=@”;
X509Certificate2证书=新的X509Certificate2(证书);
字符串xml=cert.GetRSAPublicKey().ToXmlString(false);

谢谢。只是一个更正:对于.cer文件输入,
inform
参数应该是
der
,我非常确定我在回答中所写的是正确的,并且对我有用。。。我确实使用了
-通知pem
。虽然如果
-inform der
也能工作,那就太酷了。对于其他尝试此功能的人来说,
-inform der
对我不起作用,但是
-inform PEM
可以工作。天哪,我找了这么久。这对我来说是一个令人振奋的消息,我们应该使用重定向到文件的
-noout
,而不是
-out
。我试图从GoogleOAuthJWKS_UrlV1接收的PEM文件中提取pub密钥,所以现在我终于做到了。谢谢Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。还要看到,与这些东西斗争往往是开发人员的事。关于证书管理有很多问题。它不是超级用户、Linux或开发人员操作系统,所有这些都不够具体。我相信这实际上是正确的地方@jww根本没有帮助stackoverflow社区。伙计们,请报告他
string certificate = @"<PATH TO .CER>"; 
X509Certificate2 cert = new X509Certificate2(certificate); 
string xml = cert.GetRSAPublicKey().ToXmlString(false);