私はWindows Mobile 6で作業しており、Apache Webサーバーと通信するときにクライアント認証を受けたいと考えています。私は私のローカル証明書ストアに証明書を持って、それはかなり簡単です:クライアント認証に.NET Compact FrameworkでX509証明書を使用するHTTPRequest
X509Store myStore = new X509Store("MY", StoreLocation.CurrentUser);
myStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certificates = myStore.Certificates;
X509Certificate2 clientcertificate;
foreach (X509Certificate 2certificate in certificates) {
clientcertificate = certificate; //omitted code to validate certificate
}
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(webPage);
req.AllowWriteStreamBuffering = true;
req.AllowAutoRedirect = false;
req.Method = "POST";
req.ContentType = "text/xml";
req.Accept = "text/xml";
req.ClientCertificates.Add(clientcertificate);
Stream stream = req.GetRequestStream();
stream.Write(buffer, 0, buffer.Length);
stream.Close();
このコードセグメントは、限り、私は「req.ClientCertificates.Add(clientcertificate)」の行を削除して動作します。
これが挿入されると、「SSL/TLSの安全なチャネルを確立できませんでした」というメッセージが表示されます。 Maddeningly十分に、私はこの正確なコードを通常の.NET Frameworkで使用すると、証明書を完全に送信します。
Compact Frameworkでこれが可能かどうかは知っていますか?クライアント認証用のX509証明書を提示できない場合は、認証が適切であることを確認するために他にどのような方法をとるべきですか(CAPIまたは他のMicrosoft暗号化モジュールにアクセスする必要があります)
ありがとうございました。
[ServicePointManager.CertificatePolicy](http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.certificatepolicy%28v=vs.90%29.aspx)プロパティを見て、 [ICertificatePolicy](http://msdn.microsoft.com/en-us/library/system.net.icertificatepolicy%28v=vs.90%29.aspx)インターフェイス。 –
お返事ありがとうございます。中間証明書をインストールし、ICertificatePolicyにコードを追加して、すべての証明書、同じ問題を許可しました。 –