gpt4 book ai didi

c# - 如何在 .NET 中验证 HTTPS/SSL 证书的有效性?

转载 作者:行者123 更新时间:2023-11-30 14:23:33 27 4
gpt4 key购买 nike

如何在 .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;
}
}

最佳答案

它不会被调用,因为您正在之后设置ValidationCallback您已经发出请求。

改成这样:

HttpWebRequest request = WebRequest.CreateHttp( url );
request.ServerCertificateValidationCallback += ServerCertificateValidationCallback;
using( HttpWebResponse response = (HttpWebResponse)request.GetResponse() ) { }
Console.WriteLine("End");

...它会起作用。

关于c# - 如何在 .NET 中验证 HTTPS/SSL 证书的有效性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44953894/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com