私はWindowsMobile6で作業しており、ApacheWebサーバーと通信するときにクライアント認証を取得したいと考えています。ローカルの証明書ストアに証明書がありますが、それはかなり簡単なはずです。
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のセキュリティで保護されたチャネルを確立できませんでした」というメッセージが表示されます。不思議なことに、通常の.Net Frameworkでこの正確なコードを使用すると、証明書が完全に送信されます。
これがCompactFrameworkで可能かどうか誰かが知っていますか?クライアント認証用のX509Certificateを提示できない場合、認証が適切であることを確認するために他にどのような方法を追求する必要がありますか(CAPIまたは他のMicrosoft暗号化モジュールにアクセスできる必要があります)
ありがとう。