0
如何验证.NET中HTTPS/SSL证书的有效性?如何验证.NET中HTTPS/SSL证书的有效性?
理想情况下,我想建立一个HTTPS连接到网站,然后找出是否以有效的方式完成(证书未过期,主机名匹配,证书链信任等),但内置的HTTP客户端似乎忽略证书错误(并且我不确定是否需要物理下载网页来验证证书?)。
我试着用下面的代码(适应于在注释的答案),但ValidationCallback不会被调用:
static void Main(string[] args)
{
String url = "https://www.example.com";
HttpWebRequest request = WebRequest.CreateHttp(url);
request.GetResponse();
request.ServerCertificateValidationCallback += ServerCertificateValidationCallback;
Console.WriteLine("End");
Console.ReadKey();
}
private static bool ServerCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
{
Console.WriteLine("Certificate OK");
return true;
}
else
{
Console.WriteLine("Certificate ERROR");
return false;
}
}
可能重复[C#我如何验证根CA证书(x509)链?](https://stackoverflow.com/questions/7331666/c-sharp-how-can-i-validate- a-root-ca-cert-certificate-x509-chain) – jAC
ServicePointManager是否设置为忽略ssl验证? [查看本文](https://stackoverflow.com/a/12507094/1709981)。 – guwere
@guwere好的开始,但它似乎不适合我?编辑了我的问题 – NickG