Ошибки .Net Core Refit https - PullRequest
       18

Ошибки .Net Core Refit https

0 голосов
/ 28 августа 2018

У меня есть приведенный ниже код, который использует Refit для вызова https. Он работает из консольного приложения, ориентированного на .Net Framework 4.6.1.

Когда я запускаю точно такой же код из консольного приложения для .Net Core 2.1, я получаю сообщение об ошибке:

The SSL connection could not be established... An unknown error occurred while processing the certificate

Я использую ремонтную версию 4.5.6

            System.Net.ServicePointManager.SecurityProtocol =
                SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

            var baseAddress = new Uri(BaseHttpsAddress);
            var httpClientHandler = new HttpClientHandler
            {
                ClientCertificateOptions = ClientCertificateOption.Automatic
            };

            var httpClient = new HttpClient(httpClientHandler) { BaseAddress = baseAddress, Timeout = _requestTimeout };

            var service = RestService.For<IMyService>(httpClient);

            var result = await service.GetUsers();

На самом деле при таргетинге на .net core 2.1 все мои вызовы https не выполняются, но мои вызовы http работают нормально.

Есть ли какая-нибудь конфигурация или что-то, чтобы получать вызовы https, работающие в приложении .net core 2.1 с использованием refit?

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Обычный .NET автоматически проверяет, установлен ли сертификат Windows, а .Net Core - нет.

Так что с .NET Core мне нужно было вручную добавить сертификат, и это сработало

0 голосов
/ 29 августа 2018

Я пытаюсь принять все сертификаты сервера как действительные с помощью приведенного ниже кода. Однако в режиме реального времени вы добавляете логику для проверки сертификата сервера.

System.Net.ServicePointManager.SecurityProtocol =
            SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

....
 ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; 
...
// your https call goes here
....
0 голосов
/ 28 августа 2018

Вы должны указать ServicePointManager принимать соединения по протоколу TLS (соответствующая версия). Вы пробовали это Протокол безопасности по умолчанию в .NET 4.5 . Это для .Net 4.5. Однако то же самое применимо для ядра .Net.

...