Рейтинг:0

Какую версию TLS использует приложение .NET Core 3.1 + .NET Standard 2.0, использующее HttpClient в Windows Server 2016?

флаг sn

У меня есть

  1. приложение, состоящее из консольного приложения .NET Core 3.1
  2. и библиотека .NET Standard 2.0.
  3. Консольное приложение вызывает библиотеку, которая использует System.Net.Http.HttpClient для вызова https://... API.
  4. Все приложение работает в центре обработки данных Windows Server 2016 (версия 1607, сборка 14393.4704).

При использовании HttpClient я делаю это

Клиент HttpClient = новый HttpClient();
client.DefaultRequestHeaders.Add("WWW-Authenticate", $"BASIC...");
var response = await client.PostAsync (apiUrl, contentString);

Какая версия TLS используется по умолчанию?

Было бы здорово, если бы кто-нибудь дал мне ссылку на документацию Microsoft.

bjoster avatar
флаг cn
Так ты пишешь софт?
Рейтинг:-1
флаг sn

Не уверен на 100%, но...

После некоторого поиска в Google я нашел эту документацию Microsoft. Похоже, что если оставить настройки SSL по умолчанию для HttpClient, то HttpClient использует настройки TLS ОС по умолчанию. А в Windows Server 2016 это похоже на TLS 1.2.

Центр обработки данных Windows Server 2016 (версия 1607, сборка 14393.4704)

  1. TLS включен по умолчанию в Windows Server 2016: https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls#support-for-tls-12 https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/security/enable-tls-1-2-client#bkmk_winhttp

Чтобы включить TLS 1.2 в Windows Server 2016

  1. Как включить TLS 1.2 на серверах сайта и в удаленных системах сайта https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/security/enable-tls-1-2-сервер
  2. Проверьте настройки реестра (см. первую ссылку выше, я могу опубликовать только 8 ссылок, потому что у меня слишком маленькая репутация)

.NET Core 3.1

  1. В .NET Core 3.1 HttpClient использует System.Net.Http.SocketsHttpHandler. HTTP-клиент

    1. документация https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=net-6.0#remarks
  2. SocketsHttpHandler

    1. документация https://docs.microsoft.com/en-us/dotnet/api/system.net.http.socketshttphandler?view=net-6.0
  3. SocketsHttpHandler имеет свойство SslOptions. https://docs.microsoft.com/en-us/dotnet/api/system.net.http.socketshttphandler.ssloptions?view=net-6.0#system-net-http-socketshttphandler-ssloptions

  4. SslOptions имеет свойство EnabledSslProtocols. https://docs.microsoft.com/en-us/dotnet/api/system.net.security.sslclientauthenticationoptions.enabledsslprotocols?view=net-6.0#system-net-security-sslclientauthenticationoptions-enabledsslprotocols

  5. EnabledSslProtocols имеет значение по умолчанию none.

  6. Значение по умолчанию none для EnabledSslProtocols означает: Позволяет операционной системе выбирать наилучший протокол для использования и блокировать незащищенные протоколы. Если у вашего приложения нет особых причин не делать этого, вы должны использовать это поле.

    1. https://docs.microsoft.com/en-us/dotnet/api/system.security.authentication.sslprotocols?view=net-6.0

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.