.Net Core Refit https ошибки

У меня есть код ниже, который использует 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 ответа

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

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

....
 ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; 
...
// your https call goes here
....

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

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

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

Другие вопросы по тегам