Как я могу преобразовать SSL-сертификат из PEM в DER и сохранить закрытый ключ?

StackOverflow https://stackoverflow.com/questions/213568

Вопрос

Предыстория: у меня есть сертификат PKCS # 12 (p12) с симметричным шифром (паролем), который я использовал OpenSSL для преобразования в PEM; открывая его в виде текста, он содержит как раздел BEGIN / END CERTIFICATE , так и BEGIN / END RSA PRIVATE KEY . Класс .NET Framework X509Certificate поддерживает только " ASN.1 DER " формат, поэтому я использовал OpenSSL для преобразования PEM в DER. К сожалению, похоже, что это не включает закрытый ключ, который мне нужен для установления SSL-соединения с SslStream & amp; <Код> TcpClient .

X509CertificateCollection certsFromFile = new X509CertificateCollection();
X509Certificate2 cert = new X509Certificate2("my.der.crt");
if (!cert.HasPrivateKey)
    throw new Exception("No private key");
certsFromFile.Add(cert);

TcpClient tcpclient = new TcpClient(hostname, port);
SslStream sslstream = new SslStream(tcpclient.GetStream(), false,
    null, null);
sslstream.AuthenticateAsClient(hostname, certsFromFile,
    SslProtocols.Ssl3, false);
sslstream.Close();
tcpclient.Close();

Как мне взять этот файл PEM и превратить его в DER, сохранив информацию о секретном ключе, чтобы я мог использовать его в .NET для подписи?

Это было полезно?

Решение

Ой, я отстал! Похоже, X509Certificate2 может читать файлы PKCS # 12, поэтому нет необходимости в каком-либо преобразовании.

Другие советы

Сертификаты и ключи обычно хранятся отдельно. Разрежьте файл PEM на два файла, один с сертификатом и один с ключом. Затем вы можете использовать набор инструментов openssl для преобразования каждого файла отдельно в файл DER.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top