安全な TCP サーバーを実装しようとしています。その結果X509Certificate2
、クライアントを認証するためにクラスのオブジェクトを作成する必要があります。
このような証明書オブジェクトには、受信メッセージを復号化できるようにするために秘密鍵も含まれている必要があると思いますが、そうではありませんか? 証明書ファイルをどのように生成しても、そのファイル アドレスをX509Certificate2
のコンストラクターに渡すと、オブジェクトのHasPrivateKey
プロパティは false になり、クライアントは認証されません!
クラスの使用方法X509Certificate2
に関する Microsoft のページでは、ソース コードのコメントに、次のmakecert
ようなプログラムを使用して証明書を生成できることが示されています。
makecert -r -pe -n "CN=CERT_SIGN_TEST_CERT" -b 01/01/2010 -e 01/01/2012 -sky exchange -ss my
どの-pe
スイッチで証明書に秘密鍵を含める必要がありますが、生成されたファイルを見ると、それが行われていないことがわかります。
openssl
Monoを使用してこのソフトウェアをUbuntuに実装しているので、代わりに使用できると思いました。このページの指示に従って、秘密鍵と公開鍵を作成しました。X509Certificate2
クラスは、makecert
コマンドによって作成されたかのように公開鍵を受け入れますが、秘密鍵は受け入れません (作成時に例外がスローされます)。
同じ質問をする SO に比較的古い投稿がありますが、受け入れられた回答はありません。そして、与えられた 2 つの証明書は、証明書に PKCS8 と PKCS12 の 2 つの異なる形式を使用することを提案していますが、ドキュメントX509Certificate
ではPKCS7 を使用することが明確に述べられています!
とにかく私はすべて混乱しています。X509Certificate2
秘密鍵をロードして使用できた人はいますか? どのように?