Не удалось установить соединение SSL - PullRequest
0 голосов
/ 23 октября 2018

Я использую стороннюю библиотеку ( Splunk c # SDK ) в своем основном приложении ASP.NET.Я пытаюсь подключиться к локальной службе Splunk через этот SDK, но получаю исключение:

System.Net.Http.HttpRequestException: Невозможно установить соединение SSL, см. Внутреннее исключение.

И Внутреннее исключение говорит:

Удаленный сертификат недействителен в соответствии с процедурой проверки.

Этот SDK использует HTTP-клиент подкапот, но у меня нет доступа к этому объекту для настройки HttpClientHandler.

Весь мой поиск в Google заканчивается использованием ServicePointManager для обхода проверки SSL, но это решение не работает в ядре Asp.Net.

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

Есть ли способ обойти эту проверку в ядре asp.Net?

Ответы [ 3 ]

0 голосов
/ 13 июня 2019
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) =>
{
    // local dev, just approve all certs
    if (development) return true;
    return errors == SslPolicyErrors.None ;
};

Этот блог помог мне

https://www.khalidabuhakmeh.com/validate-ssl-certificate-with-servicepointmanager

0 голосов
/ 14 июня 2019

Это сработало для меня,

Создать Splunk.Client.Context , предоставив пользовательский HttpClientHandler , который будет обходить SSL недействительный сертификатошибки.

HttpClientHandler handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };

// Create Context 
Context context = new Context(Scheme.Https, "localhost", 8089, default(TimeSpan), handler);

// Create Service
service = new Service(context);
0 голосов
/ 05 июня 2019

Да, вы можете обойти сертификат, используя следующий код ...

        HttpClientHandler clientHandler = new HttpClientHandler();
        clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };

        // Pass the handler to httpclient(from you are calling api)
        var client = new HttpClient(clientHandler)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...