Sto lavorando su Windows Mobile 6 e vorrei avere l'autenticazione del client quando si parla con un server web Apache. Ho un certificato nel mio locale di certificati e dovrebbe essere piuttosto semplice:Utilizzo di un certificato X509 in .Net Compact Framework per l'autenticazione client 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();
segmento Questo codice funziona finché rimuovo "req.ClientCertificates.Add (ClientCertificate)" linea.
Una volta inserito, viene visualizzato il messaggio "Impossibile stabilire un canale protetto per SSL/TLS". Stranamente, quando uso questo codice esatto nel normale .Net Framework, trasmette perfettamente il certificato.
Qualcuno sa se questo è possibile in Compact Framework? Se non riesco a presentare il certificato X509 per l'autenticazione client, quali altri modi devo perseguire per garantire che l'autenticazione sia corretta (dovrei avere accesso a CAPI o altri moduli crittografici Microsoft)
Grazie.
Dai un'occhiata alla proprietà [ServicePointManager.CertificatePolicy] (http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.certificatepolicy%28v=vs.90%29.aspx) e l'interfaccia [ICertificatePolicy] (http://msdn.microsoft.com/en-us/library/system.net.icertificatepolicy%28v=vs.90%29.aspx). –
Grazie per la risposta. Ho installato i certificati intermedi e aggiunto il codice a ICertificatePolicy per consentire tutti i certificati, lo stesso problema. –