如何忽略SSL策略以执行HTTPClient请求?

3

我正在尝试忽略SSL策略,使用HttpClient进行请求,但ServerCertificateValidationCallback从未被调用。在ASP.NET Core应用程序中调用ServerCertificateValidationCallback的正确位置是什么?我将其放在HttpClient之前使用。

注意:此类位于net462类库中。

代码:

 System.Net.ServicePointManager.ServerCertificateValidationCallback += 
 delegate (object sender,      
 System.Security.Cryptography.X509Certificates.X509Certificate certificate,
 System.Security.Cryptography.X509Certificates.X509Chain chain,
 System.Net.Security.SslPolicyErrors sslPolicyErrors)
 {
     return true; 
 };

 using (var client = new HttpClient())
 {
    client.BaseAddress = new Uri("https://myapi");
    ...

    var result = client.PostAsync(method, httpContent).Result;
    ...
 }
2个回答

1
考虑尝试像这样做。
//Handle TLS protocols
System.Net.ServicePointManager.SecurityProtocol =
    System.Net.SecurityProtocolType.Tls
    | System.Net.SecurityProtocolType.Tls11
    | System.Net.SecurityProtocolType.Tls12;

var client = new HttpClient();
client.BaseAddress = new Uri("https://myapi");
//...

var result = await client.PostAsync(method, httpContent);

安全协议在我的一个项目中运行正常。我可以在 Fiddler 中看到 HTTPS 协议正确发送了安全头信息(Acess-Control-AllowHeaders: Content-Type, api_key, Authorization)。然而,在另一个使用相同请求的项目中,这些头信息不存在,并且正在发送 HTTP 请求。我正在寻找有关此行为的答案。如果你有任何想法,欢迎分享。当我解决这个 bug 时,我会很高兴与你分享。谢谢! - Carlos

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接