SSL証明書をPEMからDERに変換し、秘密キーを保持するにはどうすればよいですか?
-
03-07-2019 - |
質問
バックストーリー:OpenSSLを使用してPEMに変換する対称暗号(パスワード)を使用したPKCS#12(p12)証明書があります。それをテキストとして開くと、 BEGIN / END CERTIFICATE
セクションと BEGIN / END RSA PRIVATE KEY
の両方が含まれています。 .NET Frameworkの X509Certificate
クラスは、「ASN.1 DER」のみをサポートしています。形式なので、OpenSSLを使用してPEMをDERに変換しました。残念ながら、これを行うには SslStream
&でSSL接続を確立するために必要な秘密鍵が含まれていないようです。 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();
署名に.NETで使用できるように秘密鍵情報を保持しながら、このPEMファイルを取得してDERにするにはどうすればよいですか?
解決
おっと、私は時代遅れです! X509Certificate2
はPKCS#12ファイルを読み取ることができるため、変換の必要はありません。
他のヒント
証明書とキーは通常、別々に保存されます。 PEMファイルを2つのファイルに切り取ります。1つは証明書付きで、もう1つはキー付きです。その後、opensslツールキットを使用して、各ファイルを個別にDERファイルに変換できます。
所属していません StackOverflow