非常に基本的なWebサーバーを作成するのにHttpListener
を使用しています。私はhttpcfgツールを使ってSSLを使って適切なポートと証明書にバインドするように設定しました。これは正常に動作しているようです。クライアント証明書認証を使用したいと思います。だから、GetClientCertificate
のオブジェクトをHttpListenerRequest
オブジェクトに追加しましたが、いつもnull
が返ってきます。私のテストクライアントは非常に簡単です:HttpListenerRequestがクライアント証明書を返さない
HttpWebRequest webReq = (HttpWebRequest) WebRequest.Create("https://127.0.0.1:8080/ssltest/");
webReq.ClientCertificates.Add(new X509Certificate2("ssltest.pfx", "ssltest"));
webReq.GetResponse();
私はHttpcfgのツールは、クライアント証明書は、私が(-f 2
)このフラグを指定するが、私はまだクライアント証明書を取得していないよ試してみましたので、交渉されるべきかどうかを示すフラグを持っていることに気づきました。私もthis Microsoft support issueに出くわしましたが、これはかなり関連しているようですが、私は最新の.NET 2.0サービスパックを使用しています。また、httpcfgフラグを試してみてください。
私はここで何かが分かりにくいと思っています。何か案は?
編集:私は非常に関連性が高いと思われるthis questionが見つかりました。残念なことに、その質問に対する回答は受け入れられていません。提案された答えは、私がすでに試したこと(httpcfgツールと適切なフラグ)を提案します。
証明書が正しくロードされていますか?私はコンソールに証明書オブジェクトのいくつかのデバッグプロパティを書き留めておきます。 –
十分に公正です。これを試してみましたが、X509Certificate2オブジェクトはClientCertificatesコレクションに追加する前に有効です。 – Dennis
これが適切かどうかは分かりませんが、PFXファイルではなくCERファイルが表示されることが予想されます... PFXファイルには秘密鍵も含まれていますが、SSL要求には必要ないはずです。それでも、私はこれがうまくいくと思います。たぶんCERファイルの公開鍵だけをエクスポートしようとしますか? –