Windows Mobile 6에서 작업 중이며 Apache 웹 서버와 통신 할 때 클라이언트 인증을 받고 싶습니다. 나는 내 로컬 인증서 저장소에 인증서를 가지고 오히려 간단합니다 :.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에서 가능한지 알고 계십니까? 클라이언트 인증을위한 X509Certificate을 제시 할 수없는 경우 인증이 적절한 지 확인하기 위해 다른 방법을 사용해야합니다 (CAPI 또는 다른 Microsoft 암호화 모듈에 액세스해야 함)
감사합니다.
[ServicePointManager.CertificatePolicy] (http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.certificatepolicy%28v=90.aspx) 속성을 살펴보고 [ICertificatePolicy] (http://msdn.microsoft.com/en-us/library/system.net.icertificatepolicy%28v=90.asp) 인터페이스. –
답장을 보내 주셔서 감사합니다. 중간 인증서를 설치하고 ICertificatePolicy에 코드를 추가하여 모든 인증서, 동일한 문제를 허용했습니다. –