ТРЕБУЕТСЯ ли соответствие FIPS для связи TLS 1.2 в Windows?

Хорошо, это была постоянная проблема в течение некоторого времени. Я экспериментировал для пару месяцев и пока что единственный способ заставить мои приложения взаимодействовать с Windows Server 2008 R2 — включить "Использовать FIPS-совместимые алгоритмы для шифрования, хеширования и подписи" в групповой политике как клиентской, так и серверной машины. Как только это включено (включен TLS 1.2 и отключен TLS 1.0 в реестре как клиента, так и сервера), он работает.

Но моя дилемма заключается в том, что мне не нужно соответствие FIPS и на основе рекомендацию Microsoft и тот факт, что мне нужно обновить и изменить много кода, чтобы сделать все мои приложения соответствуют FIPS (не говоря уже о неопределенности в отношении того, будут ли все используемые сторонние приложения соответствовать требованиям клиентов), я надеюсь на лучшее решение.

Для справки, приложения, которые я пытаюсь заставить общаться, — это MS Web Deploy 3.6, .NET Remoting через HTTPS/IIS и развертывание ClickOnce.

Меня осенило, что когда я включаю TLS 1.2 на сервере, без включения режима FIPS, браузеры могут взаимодействовать с ним. Итак, очевидно, есть какой-то способ выполнить работу без этой настройки, я просто не нашел его.

Я просмотрел этот ответ и этот ответ, но это похоже на низкоуровневый параметр, который нельзя установить в файле конфигурации, поэтому он не будет работать по крайней мере в 2 из 3 моих случаев (он может работать с .NET удаленно, я еще не пробовал). Но отсутствие примеров ужасает - может быть, это и есть ответ, но я не могу понять, как его использовать.

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

Еще одно потенциальное решение, которое я придумал, — использовать VPN для подключения к серверу, чтобы моим приложениям не требовался зашифрованный протокол для связи. Однако, поскольку я использую Windows Server 2008 R2 Web Edition (которая не поддерживает VPN), я вынужден использовать стороннее решение (которое, надеюсь, будет поддерживать TLS 1.2) или перестраивать свой сервер на новой ОС.

У меня конкретный вопрос: как я могу заставить скомпилированные приложения .NET, такие как MS Web Deploy 3.6, обмениваться данными через TLS 1.2 без обеспечения соответствия FIPS, так же, как это делают браузеры ?


person NightOwl888    schedule 28.11.2015    source источник


Ответы (1)


Мой ответ основан на информации из статьи: Безопасность транспортного уровня ( TLS) передовой опыт работы с .NET Framework и, по-видимому, зависит от наличия установленной версии .NET 4.7 или более поздней версии, которой не существовало, когда изначально задавался этот вопрос.

Мое тестирование проводилось на сервере 2016 года, когда .NET 4.7 выступал как клиент и сервер, взаимодействуя сам с собой. Клиентский EXE-файл предназначался для версии .NET до 4.7. В этом случае кажется, что следующие значения по умолчанию равны 0, если они отсутствуют в реестре.

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

После добавления этих значений мне больше не нужно было включать FIPS для работы TLS 1.2.

person MichaC    schedule 31.05.2018