繁体   English   中英

如何使用ASP.NET Core验证Web请求的SSL证书

[英]How to validate SSL Certificate for Web request using ASP.NET Core

我已经实现了一种使用APS.NET核心( System.Net.HttpWebRequest )从REST API请求(基于SSL的https:// )中获取响应的方法。

我需要忽略在获取WebResponse发生的证书错误。 我介绍了许多博客,并获得了使用ServicePointManager的解决方案,并使用了以下代码

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true; 

但是在ASP.NET核心中,不支持ServicePointManager 因此,请仅通过HttpWebRequest而不通过HttpClient来帮助我解决此问题。

.NET Core使ServerCertificateCustomValidationCallback委托可用于覆盖。 例:

var handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback = delegate { return true; };
var http = new HttpClient(handler);
Console.WriteLine(http.GetAsync("https://expired.badssl.com/").GetAwaiter().GetResult());

输出:

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Server: nginx/1.10.0
  Server: (Ubuntu)
  Date: Mon, 06 Mar 2017 05:56:52 GMT
  Transfer-Encoding: chunked
  Connection: keep-alive
  ETag: W/"58924b62-1d5"
  Cache-Control: no-store
  Content-Type: text/html
  Last-Modified: Wed, 01 Feb 2017 20:56:02 GMT
}

在.NET 1.0.0-preview2-1-003177的Ubuntu 16.04上进行了测试。 与此相关的一个开放问题在MacOS上也是如此。

在调用请求之前:

ServicePointManager.ServerCertificateValidationCallback = new   
RemoteCertificateValidationCallback(validarCertificado);

...并包括以下功能:

protected bool validarCertificado(Object sender,
                              X509Certificate certificado,
                              X509Chain cadena,
                              SslPolicyErrors sslErrores)
{
   return true;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM