c# - 使用 HttpClient (.NET) 时出现 SSL 策略错误

标签 c# .net ssl

我正在尝试使用具有自签名证书的本地 Web 服务器上的 REST API。在运行时,应用程序抛出错误

AuthenticationException: The remote certificate is invalid according to the validation procedure.

我已尝试此答案中的修复:https://stackoverflow.com/a/1386568/8980983但错误仍然存​​在。代码如下:

static void Main(string[] args)
    {
        HttpClient httpClient = new HttpClient();
        httpClient.DefaultRequestHeaders.Clear();

        ServicePointManager.ServerCertificateValidationCallback = delegate (
            object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            return true;
        };
        var loginPage = httpClient.GetAsync("https://<local IP address>/loginpage.html").GetAwaiter().GetResult();

        //do stuff with response...
    }

我可以采取哪些措施来有效忽略 SSL 策略错误?

最佳答案

想通了。结果 HttpClient 类不使用 ServicePointManager.ServerCertificateValidationCallback 方法。解决办法如下:

static void Main(string[] args)
    {
        HttpClientHandler httpClientHandler = new HttpClientHandler();
        httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };

        HttpClient httpClient = new HttpClient(httpClientHandler);
        httpClient.DefaultRequestHeaders.Clear();

        var loginPage = httpClient.GetAsync("https://<local IP address>/loginpage.html").GetAwaiter().GetResult();
     }

关于c# - 使用 HttpClient (.NET) 时出现 SSL 策略错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61394174/

相关文章:

.net - vs2008 代理?

css - Jmeter:响应代码:非 HTTP 响应代码:javax.net.ssl.SSLHandshakeException

ssl - 如何在 Powershell 中使用客户端证书创建 TCP 客户端连接

c# - 使用第三方 dll 的 VisualStudio NUnit3TestAdapter 测试项目

c# - 通过monotouch播放.m3u8音频流文件

c# - 如何在一行中合并多个数据表(每个数据表返回一行)

.net - FormView.FindControl() 在 DataBind() 之前返回 null

c# - 编写大文件的最佳实践

SSL 证书 SAN 还是通配符?

c# - Entity Framework 对于小型企业应用程序来说会不会太过分了?