这就是完整的.net
X509Chain ch = new X509Chain();
ch.Build(c);
Debug.WriteLine("Chain Information..");
...
我问这个的原因是因为我无法使用紧凑框架Windows移动应用程序中的链式证书将数据发布到安全的https网站。
有许多建议要覆盖ICertificatePolicy并在HttpWebRequest调用期间为cert返回true ...从安全角度来看,这是不可接受的。
public static bool ValidateServerCertificate(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
//accept all certs.
return true;
}
我的解决方案是通过链条进行验证,并通过比较链中每个证书的指纹与设备证书的指纹进行验证。
这就是我想在CF中做的事情 - 如果证书有链或使用某种未在设备上实现的加密,它就无法工作。
string data = "hello";
Uri uri = new Uri("https://www.example.com/");
HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = new StreamWriter(request.GetRequestStream())) {
stream.Write(data);
stream.Flush();
}
但由于ssl验证问题,这在GetRequestStream()上失败。