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