Как проверить SSL сертификат для веб-запроса с использованием ASP.NET Core
Я реализовал метод получения ответа от запроса REST API (на основе SSL: https://
) с использованием ядра APS.NET (System.Net.HttpWebRequest
).
Мне нужно игнорировать ошибку сертификата, которая произошла при получении WebResponse
, Я сослался на многие блоги и получил решение использовать ServicePointManager
и использовал этот код ниже
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
Но в ядре ASP.NET нет поддержки ServicePointManager
, Поэтому, пожалуйста, помогите мне решить эту проблему только с помощью HttpWebRequest
не с помощью HttpClient
,
2 ответа
.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
}
Протестировано на Ubuntu 16.04 с.NET 1.0.0-preview2-1-003177. Существует открытая проблема, связанная с тем, как это работает на MacOS.
Перед тем как позвонить по запросу:
ServicePointManager.ServerCertificateValidationCallback = new
RemoteCertificateValidationCallback(validarCertificado);
... и включить эту функцию:
protected bool validarCertificado(Object sender,
X509Certificate certificado,
X509Chain cadena,
SslPolicyErrors sslErrores)
{
return true;
}