私は、スマート カード (具体的にはCommon Access Card )の形式で「クライアント証明書を必要とする」必要がある IIS6/ASP.NET Web サイトで作業しています。タイマーでさまざまな URL にアクセスして、検索インデックスの更新、Sharepoint ページの準備、およびその他のタスクを実行するためのサービスをいくつか作成する必要があります。
スマートカードにある証明書を持っていない限りサイトへのアクセスが許可されない場合、これを行うにはどうすればよいでしょうか? 証明書(.cer)をロードして、次のようにロードしようとしました:
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("https://.../someURL.html");
const string certFilename = @"my.cer";
var cert = X509Certificate2.CreateFromCertFile(certFilename);
cert.Import(certFilename, "my pin", X509KeyStorageFlags.Exportable);
request.ClientCertificates.Add(cert);
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();
しかし、403 Forbidden が表示されます。