Как извлечь открытый ключ RSA из.cer и сохранить его в.pem, используя OpenSSL?

У меня есть требование извлечь открытый ключ (RSA) из *.cer файл. Я хочу извлечь ключ и сохранить его в .pem файл, чтобы я мог использовать его значение для шифрования значений с помощью jsencrypt.

Следующая команда преобразует .cer в .pem:

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

Тем не менее, он не генерирует файл с открытым ключом, но файл с содержимым *.cer файл.

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

Какую команду я должен использовать, чтобы извлечь открытый ключ и сохранить его в .pem файл?

2 ответа

Решение

С помощью этой команды я смог сгенерировать .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#:

      string certificate = @"<PATH TO .CER>"; 
X509Certificate2 cert = new X509Certificate2(certificate); 
string xml = cert.GetRSAPublicKey().ToXmlString(false);
Другие вопросы по тегам