Как извлечь открытый ключ 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);