- Поддержка TLS ГОСТ в ОС Windows 10
- Инструкция по включению поддержки TLS ГОСТ в ОС Windows 10
- Настройка протоколов TLS на Windows Server
- Проблемы версий протоколов SSL и TLS и совместимости приложений
- Как правильно настроить TLS для разного типа приложений?
- Отключение SSL для Powershell и других .NET приложений
- Включение TLS 1.2 для WinHTTP
- Настройка с помощью IISCrypto
- В новейших сборках Windows 10 по умолчанию включен TLS 1.3
- Управление TLS Manage Transport Layer Security (TLS)
- Настройка порядка комплектов шифров TLS Configuring TLS Cipher Suite Order
- Настройка порядка комплектов шифров TLS с помощью групповая политика Configuring TLS Cipher Suite Order by using Group Policy
- Настройка порядка комплектов шифров TLS с помощью MDM Configuring TLS Cipher Suite Order by using MDM
- Настройка порядка комплектов шифров TLS с помощью командлетов TLS PowerShell Configuring TLS Cipher Suite Order by using TLS PowerShell Cmdlets
- Настройка порядка кривых ECC TLS Configuring TLS ECC Curve Order
- Управление кривыми ECC Windows с помощью CertUtil Managing Windows ECC curves using CertUtil
- Отображение зарегистрированных кривых Displaying Registered Curves
- Добавление новой кривой Adding a New Curve
- Удаление ранее добавленной кривой Removing a Previously Added Curve
- Управление кривыми ECC Windows с помощью групповая политика Managing Windows ECC curves using Group Policy
- Управление порядком TLS ECC Managing TLS ECC order
Поддержка TLS ГОСТ в ОС Windows 10
Инструкция по включению поддержки TLS ГОСТ в ОС Windows 10
- Для включения поддержки TLS ГОСТ для браузера Internet Explorer необходимо скачать и установить ViPNet CSP 4.5.
- Заполняем форму и получаем по электронной почте ссылку на дистрибутив программы.
- Скачиваем архив по ссылке из почты, распаковываем и запускаем установку.
- На этапе выбора способа установки нажимаем кнопку Настроить и включаем в установку компонент Поддержка протокола TLS/SSL.
Пользователям, которые обновляют ViPNet CSP со старой версии, следует добавить компонент Поддержка протокола TLS/SSL вручную через панель управления Windows. Для этого:
4.1. Обновляем ViPNet CSP 4.5
4.2 В меню поиска набираем appwiz.cpl, откроется меню Программы и Компоненты. Находим ViPNet CSP и выбираем пункт Изменить
4.3 В меню установки выбираем пункт Добавить или удалить компоненты и включаем в установку компонент Поддержка протокола TLS/SSL
Настройка протоколов TLS на Windows Server
Написать эту статью подоткнул тот факт, что Windows Server 2016, установленный из коробки, почему-то не имеел TLS протокол, включенный как основный по умолчанию, в то время как SSL3.0 был включен. Приводит это к разным последствиям, как для безопасности, так и для функционирования различных сервисов и приложений.
Проблемы версий протоколов SSL и TLS и совместимости приложений
Для начала рассмотрим проблемы связанные с версиями SSL протоколов:
- SSL v2 небезопасен, устарел и не рекомендуется для использования. См. атаку DROWN по этому протоколу.
- SSL v3 небезопасен и устаревший инструмент. См. атаку POODLE.
- TLS v1.0 также является устаревшим протоколом, но на практике он все же оказывается необходим. Его основная слабость (BEAST) была смягчена в современных браузерах.
- TLS v1.1 и TLS v1.2 оба не имеют известных проблем с безопасностью, но только v1.2 предоставляет современные криптографические алгоритмы.
SSL 2.0, SSL 3.0 и TLS 1.0 настоятельно рекомендуется отключить, так как большинство стандартов безопасности их уже давно не поддерживают (например, PCI DSS 3.1). Рекомендуемые протоколы TLS v1.1 и TLS v1.2 с актуальными алгоритмами шифрование и снятия хэшей.
Но и это оказывается не полной правдой. Дело в том, что использование протоколов зависит не только от системных настроек, но и от того, как написаны приложения. Например, я выяснил, что .NET приложения используют свои собственные настройки безопасности. Также известно, что если включить поддержку TLS 1.2 на SQL Server (например, применив патч https://support.microsoft.com/en-us/help/3135244/tls-1-2-support-for-microsoft-sql-server), установленный на Windows Server 2012, то приложения .NET и JAVA потеряют возможность подключаться к SQL.
Также давно известна проблема с вэб приложениями, написанными на базе интерфейса WinHTTP API. После включения TLS 1.1/1.2 они также перестают подключаться.
Службы IIS и ADFS при этом прекрасно используют новые протоколы, следуя системным настройкам. Более того, к сервисам Azure вы не сможете подключиться через TLS 1.2, но при этом, как выяснилось, Powershell даже в Windows Server 2016 использует SSL3.0 и TLS 1.0, несмотря на то, что согласно системной настройке они отключены.
Как правильно настроить TLS для разного типа приложений?
Начнем с того, что для всего есть свои реестровые ключи, однако нужно точно понимать, какой тип приложения вы хотите настроить, чтобы избежать проблем. Начну с того, что полный список доступных системных ключей в Windows 10/Windows Server 2016/2019 доступен по ссылке https://docs.microsoft.com/ru-ru/windows-server/security/tls/tls-registry-settings. Изменяя их, вы можете настроить IIS, ADFS и прочие службы. Однако, эти ключи не влияют на работу приложений .NET (и в частности, Powershell) и WinHTTP!
В чем же дело? Дело в библиотеках. IIS и ADFS используют Schannel — поставщик поддержки безопасности (SSP), реализующий стандартные протоколы проверки подлинности SSL, TLS и DTLS Internet. Интерфейс поставщика поддержки безопасности (SSPI) является интерфейсом API, используемым системами Windows для выполнения функций, связанных с безопасностью, включая проверку подлинности. В Windows все функции SSPI выполняет библиотека Schannel.dll, в которой реализованы все протоколы и наборы шифрования.
Итак, ветки реестра, которые нас интересуют:
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols — включение и отключение протоколов для Schannel.dll, как клиентских, так и серверных. Для каждого протокола — своя ветка;
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers — здесь можно изменить список и порядок просмотра (это важно!) наборов шифрования;
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp — в параметре DefaultSecureProtocols настраиваются протоколы для приложений на WinHttp API;
- HKEY_LOCAL_MACHINE\CurrentControlSet\Control\Cryptography\ECCParameters — настройка эллиптических кривых для криптографии;
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\MD5 — отключение MD5 шифрования для маркеров безопасности.
Теперь пройдем по конкретным примерам и настройкам.
Отключение SSL и TLS 1.0 протоколов на системном в Schannel подробно описано в документации Microsoft. Отключить небезопасные можно как через реестр, так и с помощью Powershell.
В этой же статье ниже описано, как отключить небезопасные алгоритмы шифрования, такие как RC4.
Отключить небезопасные наборы шифрования (cipher suites) можно через параметр Functions в ключе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002 .
Этот параметр является многострочным текстовым значением, который просто содержит построчный список наборов (один на строку). Удалите ненужные строки.
Порядок проверки наборов шифрования также удобно изменять с помощью групповых политик. Это также описано в документации.
Ну и наконец, для управления доступными наборами появились командлеты Powershell. Например, с помощью Disable-TlsCipherSuite вы можете отключить неугодный набор.
Отключение SSL для Powershell и других .NET приложений
Как я уже писал, системные настройки выше не влияют на Powershell сессии. Проверить, какие протоколы сейчас активны в вашей Powershell сессии, можно выполнив команду
Если в выводе команды увидите ssl30, tls, то их надо отключить.
Для этого в Windows Srver 2012 / Windows 2016 используйте ключ реестра
С помощью самого Powershell это можно изменить одной командой:
New-ItemProperty -path ‘HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319’ -name ‘SchUseStrongCrypto’ -value ‘1’ -PropertyType ‘DWord’ -Force | Out-Null
Включение TLS 1.2 для WinHTTP
Если коротко, то в ключе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp нужно добавить параметр DefaultSecureProtocols, который в 16-ричном виде будет содержать сумму значений всех протоколов, которые необходимо включить. Например, для включения TLS 1.1 и 1.2 надо добавить значение 0x00000A00, которое будет суммой значений TLS 1.1 (0×00000200) и TLS 1.2 (0×00000800).
Готовый патч от Microsoft для исправления этого также можно скачать по ссылке KB3140245
Настройка с помощью IISCrypto
IISCrypto — это бесплатная утилита, не требующая установки, которая позволяет включить/выключить многие настройки Schannel через графический интерфейс, .NET и WinHTTP она не настраивает.
Скачать её можно с сайта разработчика без регистрации.
В новейших сборках Windows 10 по умолчанию включен TLS 1.3
На этой неделе Microsoft объявила о включении новейшей версии протокола безопасности TLS 1.3 в свежих сборках Windows 10, начиная с Windows 10 Build 20170 (Dev). Компания отмечает, что TLS 1.3 включен по умолчанию в IIS/HTTP.SYS. Администраторы могут включить TLS 1.3 для классической версии Microsoft Edge и Internet Explorer в апплете Свойства: Интернет на вкладке Дополнительно.
Новый Microsoft Edge на Chromium поддерживает TLS 1.3 «из коробки» и не полагается на стек Windows TLS.
Кроме того, поддержка TLS 1.3 будет добавлена в Microsoft .NET Framework версии 5.0 и новее.
Включение TLS 1.3 в последних сборках Windows 10 является первым шагом на пути к более широкому внедрению новейшего протокола безопасности в данной ОС. Компания пока не сообщает, когда протокол будет включен в стабильных версиях Windows 10. Вероятнее всего, поддержка TLS 1.3 появится в первом обновлении функций 2021 года: Windows 10, версия 21H1.
Компания объявила о планах отказаться от более старых и более слабых протоколов безопасности TLS 1.0 и 1.1 в Windows 10 в первой половине 2020 года. Другие компании, в частности Google, Mozilla и Apple, также объявили об удалении поддержки устаревших протоколов из своих браузеров. TLS 1.3 уже можно включить в Chrome и Firefox.
Глобальная пандемия коронавирусной инфекции привела к задержке удаления старых протоколов. В августе 2020 года Microsoft отметила, что TLS 1.0 и 1.1 не будут отключены раньше весны 2021 года.
TLS 1.3 обеспечивает улучшенную безопасность и производительность по сравнению со старыми спецификациями. Microsoft рекомендует разработчикам как можно скорее начать тестирование TLS 1.3 в своих приложениях и службах. Стек Windows 10 будет поддерживать три набора шифров для уменьшения сложности и обеспечения «определенных свойств безопасности».
Поддерживаемые наборы шифров:
- TLS_AES_128_GCM_SHA256
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
Третий набор шифров не включен по умолчанию.
Протокол TLS 1.3 обеспечивает шифрование на более ранних этапах рукопожатия, что позволяет улучшить конфиденциальность и предотвратить помехи от плохо спроектированных промежуточных блоков. TLS 1.3 зашифровывает сертификат клиента, поэтому идентификация клиента остается конфиденциальной, а повторное согласование не требуется для безопасной аутентификации клиента.
А ваш браузер и ОС уже поддерживают TLS 1.3?
Управление TLS Manage Transport Layer Security (TLS)
Область применения: Windows Server (половина ежегодного канала), Windows Server 2016, Windows 10 Applies to: Windows Server (Semi-Annual Channel), Windows Server 2016, Windows 10
Настройка порядка комплектов шифров TLS Configuring TLS Cipher Suite Order
Разные версии Windows поддерживают разные наборы шифров TLS и порядок приоритетов. Different Windows versions support different TLS cipher suites and priority order. Порядок по умолчанию, поддерживаемый поставщиком Schannel (Майкрософт) в различных версиях Windows, см. в разделе комплекты шифров в TLS/SSL (Schannel SSP) . See Cipher Suites in TLS/SSL (Schannel SSP) for the default order supported by the Microsoft Schannel Provider in different Windows versions.
Список комплектов шифров также можно изменить с помощью функций CNG. Дополнительные сведения см. в разделе Определение приоритетов для наборов шифров SChannel . You can also modify the list of cipher suites by using CNG functions, see Prioritizing Schannel Cipher Suites for details.
Изменения в порядке набора шифров TLS вступят в силу при следующей загрузке. Changes to the TLS cipher suite order will take effect on the next boot. До перезапуска или завершения работы существующий заказ будет действовать. Until restart or shutdown, the existing order will be in effect.
Обновление параметров реестра для порядка приоритетов по умолчанию не поддерживается и может быть сброшено с помощью обновлений обслуживания. Updating the registry settings for the default priority ordering is not supported and may be reset with servicing updates.
Настройка порядка комплектов шифров TLS с помощью групповая политика Configuring TLS Cipher Suite Order by using Group Policy
Вы можете использовать порядок набора шифров SSL групповая политика параметры, чтобы настроить порядок комплекта шифров TLS по умолчанию. You can use the SSL Cipher Suite Order Group Policy settings to configure the default TLS cipher suite order.
На консоль управления групповыми политиками выберите Конфигурация компьютера > Административные шаблоны > > Параметры конфигурации SSL сети. From the Group Policy Management Console, go to Computer Configuration > Administrative Templates > Network > SSL Configuration Settings.
Дважды щелкните SSL-порядок комплекта шифров и выберите параметр включено . Double-click SSL Cipher Suite Order, and then click the Enabled option.
Щелкните правой кнопкой мыши поле комплекты шифров SSL и выберите в раскрывающемся меню пункт выбрать все . Right-click SSL Cipher Suites box and select Select all from the pop-up menu.
Щелкните выделенный текст правой кнопкой мыши и выберите пункт Копировать во всплывающем меню. Right-click the selected text, and select copy from the pop-up menu.
Вставьте текст в текстовый редактор, например notepad.exe и обновите новый список заказов комплектов шифров. Paste the text into a text editor such as notepad.exe and update with the new cipher suite order list.
Список порядка комплектов шифров TLS должен быть в формате, разделенном запятыми. The TLS cipher suite order list must be in strict comma delimited format. Каждая строка комплекта шифров заканчивается запятой (,) с правой стороны. Each cipher suite string will end with a comma (,) to the right side of it.
Кроме того, список комплектов шифров ограничен 1 023 символами. Additionally, the list of cipher suites is limited to 1,023 characters.
Замените список в наборах шифров SSL на обновленный упорядоченный список. Replace the list in the SSL Cipher Suites with the updated ordered list.
Нажмите кнопку OK или кнопку Применить. Click OK or Apply.
Настройка порядка комплектов шифров TLS с помощью MDM Configuring TLS Cipher Suite Order by using MDM
CSP политики Windows 10 поддерживает настройку комплектов шифров TLS. The Windows 10 Policy CSP supports configuration of the TLS Cipher Suites. Дополнительные сведения см. в разделе Криптография и тлсЦиферсуитес . See Cryptography/TLSCipherSuites for more information.
Настройка порядка комплектов шифров TLS с помощью командлетов TLS PowerShell Configuring TLS Cipher Suite Order by using TLS PowerShell Cmdlets
Модуль TLS PowerShell поддерживает получение упорядоченного списка комплектов шифров TLS, отключение набора шифров и включение комплекта шифров. The TLS PowerShell module supports getting the ordered list of TLS cipher suites, disabling a cipher suite, and enabling a cipher suite. Дополнительные сведения см. в разделе модуль TLS . See TLS Module for more information.
Настройка порядка кривых ECC TLS Configuring TLS ECC Curve Order
Начиная с Windows 10 & Windows Server 2016, порядок кривых ECC можно настроить независимо от порядка набора шифров. Beginning with Windows 10 & Windows Server 2016, ECC curve order can be configured independent of the cipher suite order. Если список порядка комплектов шифров TLS содержит суффиксы эллиптической кривой, они будут переопределены новым порядковым приоритетом эллиптической кривой, если они включены. If the TLS cipher suite order list has elliptic curve suffixes, they will be overridden by the new elliptic curve priority order, when enabled. Это позволяет организациям использовать объект групповая политика для настройки различных версий Windows с одинаковым порядком комплектов шифров. This allow organizations to use a Group Policy object to configure different versions of Windows with the same cipher suites order.
До Windows 10 строки комплекта шифров были добавлены с эллиптической кривой для определения приоритета кривой. Prior to Windows 10, cipher suite strings were appended with the elliptic curve to determine the curve priority.
Управление кривыми ECC Windows с помощью CertUtil Managing Windows ECC curves using CertUtil
Начиная с Windows 10 и Windows Server 2016, Windows предоставляет управление параметрами эллиптической кривой с помощью служебной программы командной строки certutil.exe. Beginning with Windows 10 and Windows Server 2016, Windows provides elliptic curve parameter management through the command line utility certutil.exe. Параметры эллиптической кривой хранятся в bcryptprimitives.dll. Elliptic curve parameters are stored in the bcryptprimitives.dll. С помощью certutil.exe администраторы могут добавлять и удалять параметры кривой в Windows, соответственно. Using certutil.exe, administrators can add and remove curve parameters to and from Windows, respectively. Certutil.exe безопасно сохраняет параметры кривой в реестре. Certutil.exe stores the curve parameters securely in the registry. Windows может начать использовать параметры кривой по имени, связанному с кривой. Windows can begin using the curve parameters by the name associated with the curve.
Отображение зарегистрированных кривых Displaying Registered Curves
Используйте следующую команду certutil.exe, чтобы отобразить список кривых, зарегистрированных для текущего компьютера. Use the following certutil.exe command to display a list of curves registered for the current computer.
Рис. 1 Certutil.exe вывода для вывода списка зарегистрированных кривых. Figure 1 Certutil.exe output to display the list of registered curves.
Добавление новой кривой Adding a New Curve
Организации могут создавать и использовать параметры кривых, повторно прополнив Поиск другими доверенными сущностями. Organizations can create and use curve parameters researched by other trusted entities. Администраторы, желающие использовать эти новые кривые в Windows, должны добавить кривую. Administrators wanting to use these new curves in Windows must add the curve. Используйте следующую команду certutil.exe, чтобы добавить кривую на текущий компьютер: Use the following certutil.exe command to add a curve to current computer:
- Аргумент курвенаме представляет имя кривой, под которой были добавлены параметры кривой. The curveName argument represents the name of the curve under which the curve parameters were added.
- Аргумент курвепараметерс представляет имя файла сертификата, содержащего параметры кривых, которые требуется добавить. The curveParameters argument represents the filename of a certificate that contains the parameters of the curves you want to add.
- Аргумент курвеоид представляет имя файла сертификата, содержащего идентификатор объекта (OID) параметров кривой, которые необходимо добавить (необязательно). The curveOid argument represents a filename of a certificate that contains the OID of the curve parameters you want to add (optional).
- Аргумент курветипе представляет десятичное значение именованной кривой из реестра с именованием кривых EC (необязательно). The curveType argument represents a decimal value of the named curve from the EC Named Curve Registry (optional).
Рис. 2. Добавление кривой с помощью certutil.exe. Figure 2 Adding a curve using certutil.exe.
Удаление ранее добавленной кривой Removing a Previously Added Curve
Администраторы могут удалить ранее добавленную кривую с помощью следующей certutil.exe команды: Administrators can remove a previously added curve using the following certutil.exe command:
Windows не может использовать именованную кривую после того, как администратор удалит кривую с компьютера. Windows cannot use a named curve after an administrator removes the curve from computer.
Управление кривыми ECC Windows с помощью групповая политика Managing Windows ECC curves using Group Policy
Организации могут распространять параметры кривой на корпоративную, присоединенную к домену компьютер, используя групповая политика и расширение реестра групповая политиканых предпочтений. Organizations can distribute curve parameters to enterprise, domain-joined, computer using Group Policy and the Group Policy Preferences Registry extension. Процесс распределения кривой: The process for distributing a curve is:
В Windows 10 и Windows Server 2016 используйте certutil.exe , чтобы добавить в Windows новую зарегистрированную именованную кривую. On Windows 10 and Windows Server 2016, use certutil.exe to add a new registered named curve to Windows.
На этом же компьютере откройте консоль управления групповыми политиками (GPMC), создайте новый объект групповая политика и измените его. From that same computer, Open the Group Policy Management Console (GPMC), create a new Group Policy object, and edit it.
Выберите Конфигурация компьютера | Предпочтения | Параметры Windows | Реестр. Navigate to Computer Configuration|Preferences|Windows Settings|Registry. Щелкните правой кнопкой мыши Реестр. Right-click Registry. Наведите указатель мыши на пункт создать и выберите элемент сбора. Hover over New and select Collection Item. Переименуйте элемент сбора в соответствии с именем кривой. Rename the collection item to match the name of the curve. Вы создадите один элемент сбора реестра для каждого раздела реестра в разделе HKEY_LOCAL_MACHINE\CurrentControlSet\Control\Cryptography\ECCParameters. You’ll create one Registry Collection item for each registry key under HKEY_LOCAL_MACHINE\CurrentControlSet\Control\Cryptography\ECCParameters.
Настройте вновь созданную коллекцию реестра предпочтений групповая политика, добавив новый элемент реестра для каждого значения реестра, указанного в разделе HKEY_LOCAL_MACHINE\CurrentControlSet\Control\Cryptography\ECCParameters[ курвенаме]. Configure the newly created Group Policy Preference Registry Collection by adding a new Registry Item for each registry value listed under HKEY_LOCAL_MACHINE\CurrentControlSet\Control\Cryptography\ECCParameters[curveName].
Разверните объект групповая политика, содержащий элемент сбора групповая политика реестра, на компьютерах с Windows 10 и Windows Server 2016, которые должны получить новые именованные кривые. Deploy the Group Policy object containing Group Policy Registry Collection item to Windows 10 and Windows Server 2016 computers that should receive the new named curves.
Рис. 3. Использование параметров групповая политика для распределения кривых Figure 3 Using Group Policy Preferences to distribute curves
Управление порядком TLS ECC Managing TLS ECC order
Начиная с Windows 10 и Windows Server 2016, можно использовать параметры групповой политики порядка кривых ECC, чтобы настроить порядок кривой ECC по умолчанию для TLS. Beginning with Windows 10 and Windows Server 2016, ECC Curve Order group policy settings can be used configure the default TLS ECC Curve Order. Используя универсальный код коррекции ошибок и этот параметр, организации могут добавить собственные доверенные именованные кривые (которые утверждены для использования с TLS) в операционную систему, а затем добавить эти именованные кривые к приоритету кривой групповая политика параметр, чтобы обеспечить их использование в будущих подтверждениях TLS. Using Generic ECC and this setting, organizations can add their own trusted named curves (that are approved for use with TLS) to the operating system and then add those named curves to the curve priority Group Policy setting to ensure they are used in future TLS handshakes. Новые списки приоритетов кривых становятся активными при следующей перезагрузке после получения параметров политики. New curve priority lists become active on the next reboot after receiving the policy settings.
Рис. 4. Управление приоритетом кривой TLS с помощью групповая политика Figure 4 Managing TLS curve priority using Group Policy