0

バックストーリー: OpenSSL を使用して PEM に変換した対称暗号 (パスワード) を持つ PKCS#12 (p12) 証明書があります。BEGIN/END CERTIFICATEそれをテキストとして開くと、セクションとの両方が含まれていることがわかりますBEGIN/END RSA PRIVATE KEY。.NET FrameworkX509Certificateクラスは「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();

この PEM ファイルを DER に変換し、秘密鍵情報を保持して .NET で署名に使用できるようにするにはどうすればよいですか?

4

2 に答える 2

2

おっと、私は時代遅れです!PKCS#12 ファイルを読み取ることができるように見えるX509Certificate2ので、変換の必要はありません。

于 2008-10-17T19:48:47.190 に答える
0

通常、証明書と鍵は別々に保管されます。PEM ファイルを、証明書を含むファイルとキーを含むファイルの 2 つのファイルに分割します。その後、openssl ツールキットを使用して、各ファイルを個別に DER ファイルに変換できます。

于 2008-10-17T19:39:42.530 に答える