■66525 / inTopicNo.1) |
C#でベーシック認証とクライアント証明書の二重証明に失敗 |
□投稿者/ mocky (1回)-(2013/05/01(Wed) 19:10:29)
|
分類:[.NET 全般]
いつも大変お世話になってます。
Webサーバとの通信の時に、自己認証局で署名したクライアント証明書による認証と、 ベーシック認証をかけたサイトとの通信をHttpWebRequestで行いたいのですが、 失敗してしまいます。どなたかご経験の方いらっしゃいましたらご教授ください。
[環境その他] ・VC#2010 (.Net3.5のコンソールアプリケーション)、Windows7 ・Webサーバ Apache2.2
[コード] string url = "https://domain.com/path/"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.ClientCertificates.Add(new X509Certificate(@"C:\Path\to\key\client.p12", "passphase")); request.PreAuthenticate = true; NetworkCredential nc = new NetworkCredential("username", "password"); request.Credentials = nc; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader responseReader = new StreamReader(response.GetResponseStream());
[その他] ・client.p12は、CA証明書とクライアント証明書をパックしたものです。 ・CA証明書および、クライアント証明書はIEの証明書ストアにもインストール済です ・IEから同様の操作をすると、正常に画面が閲覧できます。 ・サーバ側を変更し、クライアント認証のみ、あるいはベーシック認証のみにすると 正常に閲覧できます。 ・request.GetResonseStream() の行で、401エラーによるWebExceptionが発生します (StatusはProtocolErrorです) ・Credentialsについては、"Authorization"ヘッダを自力で付加ということもして みましたが同様にエラーです。
以上です。よろしくお願いします。
|
|