Параметры безопасности протокола tls windows 10 как исправить
Перейти к содержимому

Параметры безопасности протокола tls windows 10 как исправить

  • автор:

Решение проблемы с TLS 1.0, выпуск 2

В этом документе представлено последнее руководство по быстрому определению и удалению зависимостей протокола TLS версии 1.0 в программном обеспечении, созданном на базе лучших операционных систем Майкрософт. Ниже приведены подробные сведения об изменениях в продуктах и новых возможностях, предоставленных корпорацией Майкрософт для защиты собственных клиентов и веб-служб. Он предназначен для использования в качестве отправной точки для создания плана миграции в сетевую среду TLS 1.2+. Несмотря на то, что обсуждаемые здесь решения могут способствовать удалению использования TLS 1.0 в операционных системах сторонних производителей или библиотеках шифрования, они не будут в центре внимания данного документа.

TLS 1.0 — это процедуры обеспечения безопасности, впервые определенные в 1999 г. для установки каналов шифрования по компьютерным сетям. Корпорация Майкрософт поддерживала этот протокол с момента выпуска Windows XP/Server 2003. Несмотря на то, что в современных ОС не используется протокол безопасности по умолчанию, TLS 1.0 по-прежнему поддерживается для обеспечения обратной совместимости. Развитие нормативных требований, а также новые уязвимые места системы безопасности в TLS 1.0 предоставляют организациям возможность полностью отключить TLS 1.0.

Компания Майкрософт рекомендует клиентам обойти эту проблему, удалив зависимости TLS 1.0 в своих средах и отключив TLS 1.0 на уровне операционной системы, где это возможно. Учитывая время, в течение которого TLS 1.0 поддерживается отраслью программного обеспечения, настоятельно рекомендуется, чтобы любой план по отключению TLS 1.0 включал следующее.

  • Анализ кода для поиска и исправления жестко закодированных экземпляров TLS 1.0 или более старых протоколов безопасности.
  • Проверка конечных точек сети и анализ трафика для обнаружения операционных систем, использующих TLS 1.0 или более старые протоколы.
  • Полное тестирование регрессии через весь стек приложений с отключенным TLS 1.0.
  • Миграция устаревших операционных систем и библиотек или платформ разработки в версии, способные по умолчанию согласовывать TLS 1.2.
  • Тестирование совместимости между операционными системами, используемыми в вашей организации, для обнаружения любых проблем, связанных с поддержкой TLS 1.2.
  • Согласуйте со своими бизнес-партнерами и клиентами решение о переходе на нерекомендуемый протокол TLS 1.0.
  • Узнайте, какие клиенты больше не смогут подключаться к вашим серверам после того, как TLS 1.0 будет отключен.

Целью данного документа является предоставление рекомендаций, которые могут помочь устранить технические препятствия при отключении TLS 1.0 и в то же время увеличить видимость воздействия этого изменения на ваших собственных клиентов. Выполнение такого исследования поможет снизить влияние следующей уязвимости системы безопасности в TLS 1.0 на организацию. В рамках этого документа ссылки на отключение TLS 1.0 также включают TLS 1.1.

У разработчиков корпоративного программного обеспечения есть стратегическая потребность в принятии более безопасных и гибких решений (также известных как Crypto Agility), которые могут повлиять на будущие протоколы безопасности. В то время как данный документ предлагает гибкие решения для устранения жесткого задания TLS, более масштабные решения Crypto Agility находятся за рамками данного документа.

Текущее состояние реализации Microsoft TLS 1.0

В реализации TLS 1.0 от Майкрософт нет известных уязвимостей безопасности. В связи с возможностью будущих атак при переходе на использование более ранней версии и других уязвимостей TLS 1.0, не относящихся к реализации Майкрософт, рекомендуется при возможности удалить зависимости по всем протоколам безопасности, выпущенным раньше TLS 1.2 (TLS 1.1/1.0/SSLv3/SSLv2).

Планируя миграцию на TLS 1.2+, разработчики и системные администраторы должны знать о возможностях версии протокола в приложениях, разработанных их сотрудниками и партнерами. Жесткое кодирование здесь означает, что версия TLS исправлена до устаревшей версии и менее безопасна по сравнению с более новыми версиями. Версии TLS более поздней версии, чем жестко закодированная, нельзя использовать без изменения рассматриваемой программы. Этот класс проблемы нельзя устранить без изменения исходного кода и развертывания обновлений программного обеспечения. В прошлом версия протокола жесткого кодирования была распространена для тестирования и поддержки, поскольку многие обозреватели и операционные системы имели различные уровни поддержки TLS.

Поддерживаемые версии TLS в Windows

Многие операционные системы имеют устаревшую версию TLS по умолчанию или поддерживают лимиты, которые необходимо учитывать.

Рис. 1. Поддержка протокола безопасности по версии ОС
ОС Windows SSLv2 SSLv3 TLS 1.0 TLS 1.1 TLS 1.2 Протокол TLS 1.3
Windows Vista Включен Включен Включен Не поддерживается Не поддерживается Не поддерживается
Windows Server 2008 Включен Включен Включен Отключено* Отключено* Не поддерживается
Windows 7 (WS2008 R2) Включен Включен Включен Отключено* Отключено* Не поддерживается
Windows 8 (WS2012) Выключено Включен Включен Включен Включен Не поддерживается
Windows 8.1 (WS2012 R2) Выключено Включен Включен Включен Включен Не поддерживается
Windows 10 Выключено Включен Включен Включен Включен Не поддерживается
Windows 11 Выключено Включен Включен Включен Включен Включен
Windows Server 2016 Не поддерживается Выключено Включен Включен Включен Не поддерживается
Windows Server 2016 Не поддерживается Выключено Включен Включен Включен Не поддерживается
Windows Server 2019 Не поддерживается Выключено Включен Включен Включен Не поддерживается
Выпуск Windows Server 2019 GS Не поддерживается Выключено Выключено Выключено Включен Не поддерживается
Windows Server 2022 Не поддерживается Выключено Выключено Выключено Включен Включен

Выпуск Windows Server 2019 GS соответствует требованиям Microsoft SDL, TLS 1.2 только с ограниченным набором наборов шифров.

Выпуск Windows Server 2022 соответствует требованиям Microsoft SDL, TLS 1.2 и TLS 1.3 только с ограниченным набором наборов шифров.

ПРОТОКОЛ TLS 1.1.1.2 можно включить в Windows Server 2008 с помощью этого необязательного пакета Обновл. Windows.

Чтобы быстро определить, какая версия TLS будет запрошена различными клиентами при подключении к веб-службам, обратитесь к имитации подтверждений в Qualys SSL Labs. Эта модель охватывает сочетания клиентских операционных систем или браузеров разных производителей. Подробный пример, в котором показаны версии протокола TLS, согласованные различными сочетаниями клиентских операционных систем и браузеров при подключении к www.microsoft.com, см. в разделе Приложение A в конце документа.

Если это еще не сделано, мы настоятельно рекомендуем провести инвентаризацию операционных систем, используемых предприятием, клиентами и партнерами (двух последних с помощью распространения или коммуникации, или по крайней мере через сбор строк агента обработки HTTP). Эту инвентаризацию можно дополнить анализом трафика на границе вашей корпоративной сети. В такой ситуации при анализе трафика будут выдаваться версии TLS, успешно согласованные клиентами или партнерами, подключающимся к вашим службам, но сам трафик останется зашифрованным.

Улучшения в инженерии корпорации Майкрософт для устранения зависимостей TLS 1.0

С момента выпуска версии 1 этого документа Корпорация Майкрософт выпустила ряд обновлений программного обеспечения и новых функций для поддержки отключения TLS 1.0. Например:

  • Настраиваемое ведение журнала IIS для сопоставления строки агента пользователя или IP-адреса клиента, URI службы, версии протокола TLS и набора шифров.
    • С помощью этого журнала администраторы могут количественно оценить подверженность своих клиентов слабому TLS.
    • Этот портал предоставляет администраторам клиентов Office 365 ценные сведения, необходимые им для обращения к своим клиентам, которые могут не знать о своих зависимостях TLS 1.0.
    • Дополнительные сведения см. https://securescore.microsoft.com/
    • FYI. Все приложения, предназначенные для .NET 4.5 или более ранней версии, скорее всего, должны быть изменены для поддержки TLS 1.2.

    Поиск и исправление зависимостей TLS 1.0 в коде

    Для продуктов, использующих библиотеки шифрования и протоколы безопасности, предоставляемые ОС Windows, следующие шаги должны помочь определить любое жестко закодированное использование TLS 1.0 в приложениях.

    1. Найдите все экземпляры AcquireCredentialsHandle(). Это помогает рецензентам приблизиться к блокам кода, в которых TLS может быть жестко закодирован.
    2. Просмотрите все экземпляры структур SecPkgContext_SupportedProtocols и SecPkgContext_Подключение ionInfo для жестко закодированных TLS.
    3. В машинном коде задайте для любого ненулевого назначения grbitEnabledProtocols значение ноль. Это позволяет операционной системе применить используемую по умолчанию версию TLS.
    4. Отключите режим FIPS, если он включен из-за возможности конфликта с параметрами, необходимыми для явного отключения TLS 1.0/1.1 в этом документе. Дополнительные сведения см. в Приложении Б.
    5. Обновите и перекомпилируйте все приложения с помощью WinHTTP, размещенной на Server 2012 или более ранней версии.
      1. Управляемые приложения — перестроение и перенацеливание на последнюю версию .NET Framework
      2. Приложения должны добавить код для поддержки TLS 1.2 через WinHttpSetOption
      1. SecurityProtocolType
      2. SSLv2, SSLv23, SSLv3, TLS1, TLS 10, TLS11
      3. WINHTTP_FLAG_SECURE_PROTOCOL_
      4. SP_PROT_
      5. NSStreamSocketSecurityLevel
      6. PROTOCOL_SSL или PROTOCOL_TLS

      Рекомендуемое решение во всех приведенных выше случаях — удалить жестко заданный выбор версий протокола и отложить его до операционной системы по умолчанию. Если вы используете DevSkim, щелкните здесь, чтобы просмотреть правила, описывающие приведенные выше проверки, которые можно использовать с собственным кодом.

      Обновление сценариев Windows PowerShell или связанных параметров реестра

      Windows PowerShell использует .NET Framework 4.5, который не включает TLS 1.2 в качестве доступного протокола. Для решения этой проблемы доступны два решения.

        Измените скрипт, который имеется в вопросе, чтобы включить следующее:

      [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; 

      Решения (1) и (2) являются взаимоисключающими, то есть их не нужно реализовывать вместе.

      Перестроение и изменение целевой платформы управляемых приложений с использованием последней версии .NET Framework

      В приложениях, использующих версии .NET Framework до версии 4.7, могут наблюдаться ограничения по эффективной поддержке ограничения TLS 1.0 независимо от базовой операционной системы по умолчанию. Дополнительные сведения см. в приведенной ниже схеме и платформа .NET Framework рекомендациях по протоколу TLS.

      Перестроение управляемых приложений

      SystemDefaultTLSVersion имеет приоритет над нацеливанием версий TLS на уровне приложений. Рекомендуется всегда отдавать предпочтение стандартной версии TLS для ОС. Это также единственное решение для гибкого шифрования, позволяющее вашим приложениям пользоваться преимуществами будущей поддержки TLS 1.3.

      Если как целевые заданы более старые версии .NET Framework, например 4.5.2 или 3.5, то по умолчанию приложение будет использовать более старые нерекомендуемые протоколы, такие как SSL 3.0 или TLS 1.0. Настоятельно рекомендуется обновить .NET Framework до более новой версии, например .NET Framework 4.6, или задать соответствующие разделы реестра для UseStrongCrypto.

      Тестирование с помощью TLS 1.2+

      Следуя исправлениям, рекомендуемым в разделе выше, продукты следует проверить на наличие ошибок согласования протокола и совместимость с другими операционными системами предприятия, используя регрессионное тестирование.

      • Наиболее распространенной проблемой в этом регрессионном тестировании является сбой согласования TLS из-за попытки подключения клиента к операционной системе или браузеру, не поддерживающему TLS 1.2.
        • Например, клиент Vista не сможет согласовать протокол TLS с сервером, настроенным для TLS 1.2+, так как максимальная поддерживаемая версия TLS в Vista — 1.0. Этот клиент должен быть либо обновлен, либо списан в среде TLS 1.2+.
        • Если продукт согласовывает MTLS с сертификатом из нестандартного расположения (за пределами стандартного именованного хранилища сертификатов в Windows), то для правильного получения сертификата может потребоваться обновление кода.
        • Любые службы, взаимодействующие со сторонними службами, должны выполнять дополнительное тестирование взаимодействия с этими сторонними службами.
        • Для всех приложений, не использующих Windows, или серверных операционных систем требуется исследование или подтверждение того, что они могут поддерживать TLS 1.2. Чтобы определить это, проще всего выполнить сканирование.

        Простая схема для тестирования этих изменений в веб-службе состоит из следующих компонентов.

        1. Выполните проверку систем рабочей среды, чтобы найти операционные системы, не поддерживающие TLS 1.2.
        2. Проверьте исходный код и файлы конфигурации веб-службы для жестко заданного TLS, как описано в разделе «Поиск и исправление зависимостей TLS 1.0 в коде».
        3. Обновление и повторная компиляция приложений по мере необходимости:
          1. Управляемые приложения
            1. Выполните повторную сборку до последней версии .NET Framework.
            2. Убедитесь, что для любого использования перечисления SSLProtocols установлено значение SSLProtocols.None, чтобы использовать настройки ОС по умолчанию.

            Уведомление партнеров о планах отключения TLS 1.0

            После обращения к жесткому заданию TLS и обновления операционной системы или платформы разработки необходимо использовать протокол TLS 1.0, который будет необходим для координации с клиентами и партнерами.

            • Для успешного отключения протокола TLS 1.0 очень важно установить ранний контакт с партнерами и клиентами. Как минимум, это должны быть записи в блогах, технические документы или другое веб-содержимое.
            • Каждому партнеру необходимо оценить собственный протокол TLS 1.2 с помощью описанных выше инициатив по тестированию операционной системы, сканированию кода и тестированию регрессии.

            Заключение

            Удаление зависимостей TLS 1.0 является сложной проблемой, которую нужно устранить от начала до конца. Корпорация Майкрософт и отраслевые партнеры на сегодняшний день работают над этим, чтобы обеспечить большую безопасность всего стека продуктов, от наших компонентов ОС и платформ разработки до приложений и служб, созданных на их основе. Следование рекомендациям, представленным в этом документе, поможет вашему предприятию наметить правильный курс и узнать, какие проблемы следует ожидать. Это также поможет вашим клиентам лучше подготовится к переходу.

            Приложение A. Имитация подтверждения для различных клиентов, подключающихся к www.microsoft.com, любезно SSLLabs.com

            Результаты имитации подтверждения

            Приложение B. Отключение TLS 1.0/1.1 с сохранением режима FIPS

            Выполните следующие действия, если вашей сети требуется режим FIPS, но вы хотите отключить TLS 1.0/1.1:

            1. Настройте версии TLS с помощью реестра, задав для параметра «Включено» для нежелательных версий TLS значение 0.
            2. Отключите кривую 25519 (только Server 2016) с помощью групповой политики.
            3. Отключите все комплекты шифров с помощью алгоритмов, которые не разрешены соответствующей публикацией FIPS. Для Server 2016 (предполагая, что действуют настройки по умолчанию) это означает отключение шифров RC4, PSK и NULL.
            Спонсоры/Благодарность

            Марк Картрайт (Mark Cartwright)
            Брайан Салливан (Bryan Sullivan)
            Патрик Джанглс (Patrick Jungles)
            Майкл Сковетта (Michael Scovetta)
            Тони Райс (Tony Rice)
            Дэвид ЛеБлан (David LeBlanc)
            Мортимер Кук (Mortimer Cook)
            Даниэль Зоммерфельд (Daniel Sommerfeld)
            Андрей Попов (Andrei Popov)
            Мичико Шорт (Michiko Short)
            Джастин Берк (Justin Burke)
            Гов Махарадж (Gov Maharaj)
            Брэд Тернер (Brad Turner)
            Шон Стивенсон (Sean Stevenson)

            Параметры реестра протокола TLS

            В этой статье описываются поддерживаемые сведения о параметрах реестра для реализации протокола TLS и протокола SSL через поставщик поддержки безопасности SChannel (SSP). Подразделы реестра и записи, описанные в этой статье, помогают администрировать и устранять неполадки SChannel SSP, в частности протоколы TLS и SSL.

            Эти сведения предоставляются в виде справочника для использования при устранении неполадок или проверки правильности применения нужных параметров. Рекомендуется не изменять реестр напрямую, если есть другие возможности. Изменения в реестре не проверяются редактором реестра или операционной системой Windows перед их применением. В результате могут сохраниться неверные значения, что приведет к неустранимым ошибкам в системе. Если это возможно, вместо прямого редактирования реестра используйте групповую политику или другие средства Windows, такие как консоль управления Майкрософт (MMC). Если отредактировать реестр все же необходимо, соблюдайте крайнюю осторожность.

            Ведение журнала SChannel

            Существует восемь уровней ведения журнала для событий SChannel, сохраненных в системном журнале событий и доступных для просмотра с помощью Просмотр событий. Этот путь реестра хранится в HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL в разделе EventLogging с значением DWORD, равным 1.

            Десятичная или шестнадцатеричная События ведения журнала SChannel
            0 Нет событий
            1 События ошибок
            2 События предупреждения
            3 События ошибки и предупреждения
            4 Информационные и успешные события
            5 События ошибки, информационные и успешные события
            6 События предупреждения, информационные и успешные события
            7 События ошибки, предупреждения, информационные и успешные события

            После изменения уровня ведения журнала SChannel необходимо перезагрузить устройство.

            CertificateMappingMethods

            Если приложению сервера требуется проверка подлинности клиента, SChannel автоматически пытается сопоставить сертификат, предоставленный клиентским компьютером, с учетной записью пользователя. Вы можете проверять подлинность пользователей, выполняющих вход с сертификатом клиента, создавая сопоставления, связывающие данные сведения с учетной записью пользователя Windows.

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

            В большинстве случаев сертификат сопоставляется с учетной записью пользователя одним из двух следующих способов.

            • Один сертификат сопоставляется с одной учетной записью пользователя (сопоставление «один к одному»).
            • Несколько сертификатов сопоставляются с одной учетной записью пользователя (сопоставление «многие к одному»).

            Поставщик SChannel использует четыре метода сопоставления сертификатов:

            1. Сопоставление Kerberos service-for-user (S4U) (включено по умолчанию)
            2. Сопоставление имени участника-пользователя.
            3. Сопоставление «один к одному» (также называемое сопоставлением «субъект/поставщик»).
            4. Сопоставление «многие к одному».

            Путь к реестру: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

            Имя записи DWORD Включено по умолчанию
            Тема или издатель 0x000000001 No
            Издатель 0x000000002 No
            UPN 0x000000004 No
            S4U2Self 0x000000008 Да
            S4U2Self Явный 0x000000010 Да

            Применимые версии: как указано в списке «Область применения» в начале этой статьи.

            Ciphers

            Шифры TLS/SSL должны контролироваться путем настройки порядка набора шифров. Дополнительные сведения см. в разделе «Настройка порядка набора шифров TLS».

            Сведения о заказах набора шифров по умолчанию, используемых SSP SChannel, см. в статьях «Наборы шифров» в tls/SSL (SChannel SSP).

            CipherSuites

            Настройка наборов шифров TLS/SSL должна выполняться с помощью групповой политики, MDM или PowerShell, см. дополнительные сведения о настройке порядка шифров TLS.

            Сведения о заказах набора шифров по умолчанию, используемых SSP SChannel, см. в статьях «Наборы шифров» в tls/SSL (SChannel SSP).

            ClientCacheTime

            Эта запись указывает время существования элемента кэша сеансов TLS клиента в миллисекундах. Начиная с Windows Server 2008 и Windows Vista значение по умолчанию составляет 10 часов. Значение 0 отключает кэширование сеанса TLS на клиенте.

            При первом подключении клиента к серверу через SChannel SSP выполняется полное подтверждение TLS/SSL. После завершения главная копия секрета, комплект шифров и сертификаты хранятся в кэше сеанса на соответствующем клиенте и сервере.

            Путь к реестру: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

            EnableOcspStaplingForSni

            Подключение протокола OCSP позволяет веб-серверу, например службы IIS (IIS), предоставить текущее состояние отзыва сертификата сервера при отправке сертификата сервера клиенту во время подтверждения TLS. Эта функция снижает нагрузку на серверы OCSP, так как веб-сервер может кэшировать текущее состояние сертификата сервера OCSP и отправлять его нескольким веб-клиентам. Без этой функции каждый веб-клиент попытается получить текущее состояние OCSP сертификата сервера с сервера OCSP. Это приведет к высокой нагрузке на этот сервер OCSP.

            Помимо СЛУЖБ IIS, веб-службы по http.sys также могут воспользоваться этим параметром, включая службы федерации Active Directory (AD FS) (AD FS) и прокси веб-приложения (WAP).

            По умолчанию поддержка OCSP включена для веб-сайтов IIS, имеющих простую безопасную привязку (SSL/TLS). Однако эта поддержка не включена по умолчанию, если веб-сайт IIS использует один или оба из следующих типов привязок SSL/TLS:

            • Требовать указание имени сервера
            • Использовать централизованное хранилище сертификатов

            В этом случае ответ приветствия сервера во время подтверждения TLS по умолчанию не будет включать состояние OCSP с срезанный по умолчанию. Это повышает производительность: реализация windows OCSP масштабируется до сотен сертификатов сервера. Однако указание имени сервера (SNI) и центральное хранилище сертификатов (CCS) позволяют службам IIS масштабироваться до тысяч веб-сайтов, которые потенциально имеют тысячи сертификатов сервера, поэтому включение привязки OCSP для привязок CCS может привести к проблемам с производительностью.

            Применимые версии: все версии, начиная с Windows Server 2012 и Windows 8.

            Путь к реестру: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

            Добавьте следующий ключ:

            Чтобы отключить, задайте для значения DWORD значение 0:

            Включение этого раздела реестра может повлиять на производительность.

            хэш-коды;

            Алгоритмы хэша TLS/SSL должны контролироваться путем настройки порядка набора шифров. Дополнительные сведения см. в разделе «Настройка заказа набора шифров TLS».

            IssuerCacheSize

            Эта запись управляет размером кэша издателя и используется с сопоставлением издателя. SChannel SSP пытается сопоставить все издатели в цепочке сертификатов клиента, а не только прямой издатель сертификата клиента. Если издатели не сопоставляются с учетной записью, что является типичным случаем, сервер может попытаться сопоставить одно и то же имя издателя несколько раз в секунду.

            Чтобы предотвратить это, сервер имеет отрицательный кэш, поэтому если имя издателя не сопоставляется с учетной записью, она добавляется в кэш, и SChannel SSP не попытается сопоставить имя издателя еще раз до истечения срока действия записи кэша. Эта запись реестра указывает размер кэша. Эта запись не существует в реестре по умолчанию. Значение по умолчанию — 100.

            Применимые версии: все версии, начиная с Windows Server 2008 и Windows Vista.

            Путь к реестру: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

            IssuerCacheTime

            Эта запись определяет продолжительность интервала времени ожидания кэша в миллисекундах. SChannel SSP пытается сопоставить все издатели в цепочке сертификатов клиента, а не только прямой издатель сертификата клиента. В случае, если издатели не сопоставляются с учетной записью, что является типичным случаем, сервер может попытаться сопоставить одно и то же имя издателя несколько раз в секунду.

            Чтобы предотвратить это, сервер имеет отрицательный кэш, поэтому если имя издателя не сопоставляется с учетной записью, она добавляется в кэш, и SChannel SSP не попытается сопоставить имя издателя еще раз до истечения срока действия записи кэша. Этот кэш хранится по соображениям производительности, чтобы система не продолжала пытаться сопоставить одни и те же издатели. Эта запись не существует в реестре по умолчанию. Значение по умолчанию равно 10 минутам.

            Применимые версии: все версии, начиная с Windows Server 2008 и Windows Vista.

            Путь к реестру: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

            Размеры ключей KeyExchangeAlgorithm

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

            Добавлено в Windows 10 версии 1507 и Windows Server 2016.

            Путь к реестру: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman

            Чтобы указать минимальный поддерживаемый диапазон бита ключа Diffie-Hellman для клиента TLS, создайте запись ClientMinKeyBitLength . После создания записи измените значение DWORD на нужную битовую длину. Если не настроено, 1024 бита будет минимальной.

            Чтобы указать максимальный поддерживаемый диапазон битового ключа Diffie-Hellman для клиента TLS, создайте запись ClientMaxKeyBitLength . После создания записи измените значение DWORD на нужную битовую длину.

            Чтобы указать длину бита ключа Diffie-Hellman для сервера TLS по умолчанию, создайте запись ServerMinKeyBitLength . После создания записи измените значение DWORD на нужную битовую длину. Если не настроено, по умолчанию используется 2048 бит.

            Добавлено в Windows 10 версии 1507 и Windows Server 2016.

            Путь к реестру: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\PKCS

            Чтобы указать минимальный поддерживаемый диапазон длины бита ключа RSA для клиента TLS, создайте запись ClientMinKeyBitLength . После создания записи измените значение DWORD на нужную битовую длину. Если не настроено, 1024 бита является минимальным.

            Чтобы указать максимальный поддерживаемый диапазон длины бита ключа RSA для клиента TLS, создайте запись ClientMaxKeyBitLength . После создания записи измените значение DWORD на нужную битовую длину. На стороне сервера сила обмена ключами RSA управляется указанным сертификатом сервера.

            Настроенные эллиптические кривые определяют криптографическую силу обмена ключами ECDHE. Дополнительные сведения см. в разделе «Управление безопасностью транспортного уровня ( TLS)».

            Дополнительные сведения о криптографических алгоритмах набора шифров TLS/SSL см. в следующем разделе:

            • Наборы шифров в TLS/SSL (SChannel SSP)
            • Demystifying SChannel (блог)

            MaximumCacheSize

            Эта запись управляет максимальным количеством сеансов TLS для кэширования. Если параметр MaximumCacheSize задано значение 0 , кэш сеансов на стороне сервера отключается, чтобы предотвратить возобновление сеанса. Если для MaximumCacheSize задать значение больше установленного по умолчанию, Lsass.exe будет потреблять дополнительный объем памяти. Каждый элемент кэша сеансов обычно требует от 2 КБ до 4 КБ памяти. Эта запись не существует в реестре по умолчанию. Значение по умолчанию — 20000.

            Применимые версии: все версии, начиная с Windows Server 2008 и Windows Vista.

            Путь к реестру: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

            Обмен сообщениями — синтаксический анализ фрагментов

            Эта запись управляет максимальным допустимым размером сообщения подтверждения TLS, которое будет принято. Сообщения, превышающие допустимый размер, не будут приняты, и подтверждение TLS завершится ошибкой. Эти записи не существуют в реестре по умолчанию.

            Если задать значение 0x0, фрагментированные сообщения не обрабатываются и приведут к сбою подтверждения TLS. Это делает клиенты ИЛИ серверы TLS на текущем компьютере несоответствующим с ПРОТОКОЛАМИ RFCS.

            Максимальный допустимый размер может быть увеличен до 2^16 байт. Разрешение клиенту или серверу считывать и хранить большие объемы непроверенных данных из сети не рекомендуется и будет использовать дополнительную память для каждого контекста безопасности.

            Добавлено в Windows 7 и Windows Server 2008 R2: обновление, которое позволяет Обозреватель в Windows XP, в Windows Vista или в Windows Server 2008 для анализа фрагментированных сообщений tls/SSL.

            Путь к реестру: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Messaging

            Чтобы указать максимальный допустимый размер фрагментированных сообщений подтверждения TLS, которые будет принимать клиент TLS, создайте запись MessageLimitClient . После создания записи измените значение DWORD на нужную битовую длину. Если значение по умолчанию не настроено, 0x8000 байтами.

            Чтобы указать максимальный допустимый размер фрагментированных сообщений подтверждения TLS, которые сервер TLS принимает при отсутствии проверки подлинности клиента, создайте запись MessageLimitServer . После создания записи измените значение DWORD на нужную битовую длину. Если значение по умолчанию не настроено, 0x4000 байт.

            Чтобы указать максимальный допустимый размер фрагментированных сообщений подтверждения TLS, которые сервер TLS принимает при проверке подлинности клиента, создайте запись MessageLimitServerClientAuth . После создания записи измените значение DWORD на нужную битовую длину. Если значение по умолчанию не настроено, 0x8000 байтами.

            SendTrustedIssuerList

            Серверы TLS могут отправлять список различаемых имен допустимых центров сертификации при запросе проверки подлинности клиента. Это может помочь клиентам TLS выбрать соответствующий сертификат клиента TLS. Серверы TLS на основе SChannel по умолчанию не отправляют этот список доверенных издателей, так как он предоставляет центрам сертификации доверенные сервером пассивные наблюдатели, а также увеличивает объем данных, обмениваемых в ходе подтверждения TLS. Если задать значение 1 , серверы на основе SChannel отправляют свои списки доверенных издателей.

            Не отправляя список доверенных издателей, может повлиять на то, что клиент отправляет, когда он запрашивает сертификат клиента. Например, получив запрос на проверку подлинности клиента, Internet Explorer отображает только сертификаты клиента, по цепочке связанные с одним из центров сертификации, отправленных сервером. Если сервер не отправил список, интернет-Обозреватель отображает все сертификаты клиента, установленные на клиенте.

            Это поведение может быть нежелательно. Например, если среды PKI включают кросс-сертификаты, сертификаты клиента и сервера не будут иметь один корневой ЦС; Таким образом, интернет-Обозреватель не может выбрать сертификат, который объединяется с одним из ЦС сервера. Клиенты TLS могут предлагать любой доступный сертификат клиента, если сервер не отправляет список доверенных издателей. Эта запись не существует в реестре по умолчанию.

            Поведение списка доверенных издателей по умолчанию

            Версия Windows Поведение по умолчанию
            Windows Server 2012, Windows 8 и более поздних версий FALSE
            Windows Server 2008 R2, Windows 7 и более ранних версий TRUE

            Применимые версии: все версии, начиная с Windows Server 2008 и Windows Vista.

            Путь к реестру: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

            ServerCacheTime

            Эта запись указывает время существования элемента кэша сеансов TLS сервера в миллисекундах. Значение по умолчанию — 10 часов. Значение 0 отключает кэширование сеанса TLS на сервере и предотвращает возобновление сеанса. Если для ServerCacheTime задать значение больше установленного по умолчанию, Lsass.exe будет потреблять дополнительный объем памяти. Каждый элемент кэша сеансов обычно требует от 2 КБ до 4 КБ памяти. Эта запись не существует в реестре по умолчанию.

            Применимые версии: все версии, начиная с Windows Server 2008 и Windows Vista.

            Путь к реестру: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

            Время кэша сервера по умолчанию: 10 часов

            Параметры версии протокола TLS, DTLS и SSL

            SChannel SSP реализует версии протоколов TLS, DTLS и SSL. Разные выпуски Windows поддерживают разные версии протокола. Набор доступных версий TLS и SSL может быть ограничен (но не расширен) вызывающими средствами SSPI, указывающими структуру SCH_CREDENTIALS в вызове AcquireCredentialsHandle . Рекомендуется использовать системные значения по умолчанию, а не вводить ограничения версий протокола.

            Поддерживаемая версия протокола TLS или SSL может существовать в одном из следующих состояний:

            • Включено: если вызывающий объект SSPI явно не отключает эту версию протокола с помощью структуры SCH_CREDENTIALS , SChannel SSP может согласовывать эту версию протокола со вспомогательным пирингом.
            • Отключен: SChannel SSP не будет согласовывать эту версию протокола независимо от параметров, которые может указывать вызывающий объект SSPI.

            Эти значения реестра настраиваются отдельно для ролей клиента и сервера протокола в подразделах реестра с именем следующего формата:

            Эти подразделы для конкретной версии можно создать в следующем пути реестра:

            HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

            Например, ниже приведены допустимые пути реестра с вложенными ключами для конкретной версии:

            • HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client
            • HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server
            • HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\DTLS 1.2\Client

            Чтобы переопределить системное значение по умолчанию и задать поддерживаемую версию протокола TLS или SSL в состоянии «Включено», создайте значение реестра DWORD с именем «Включено» со значением записи «1» в соответствующем подразделе для конкретной версии.

            В следующем примере показан клиент TLS 1.0 с включенным состоянием :

            Screenshot of Set TLS 1.0 client-side to enabled in Windows Server registry setting.

            Чтобы переопределить системное значение по умолчанию и задать поддерживаемую версию протокола TLS или SSL в отключенном состоянии, измените значение реестра DWORD «Включено» на «0» в соответствующем подразделе для конкретной версии.

            В следующем примере показан параметр DTLS 1.2, отключенный в реестре:

            Screenshot of Windows Server registry setting for DTLS 1.2 set to disabled by default.

            Переключение версии протокола TLS или SSL на отключенное состояние может привести к сбою вызовов AcquireCredentialsHandle из-за отсутствия версий протокола, включенных системой, и в то же время, разрешенных определенными вызывающими пользователями SSPI. Кроме того, сокращение набора включенных (D)TLS и SSL-версий может нарушить взаимодействие с удаленными одноранговыми узлами.

            После изменения параметров версии протокола TLS или SSL они вступают в силу для подключений, установленных с помощью дескрипторов учетных данных, открытых последующими вызовами AcquireCredentialsHandle . (D) Клиент TLS и серверные приложения и службы TLS, как правило, повторно используют дескриптор учетных данных для нескольких подключений по соображениям производительности. Чтобы получить эти приложения для повторного получения маркеров учетных данных, может потребоваться перезапуск приложения или службы.

            Эти параметры реестра применяются только к SChannel SSP и не влияют на сторонние реализации TLS и SSL, которые могут быть установлены в системе.

            Как включить протокол TLS 1.2 в Windows?

            date

            13.10.2022

            user

            itpro

            directory

            Windows 10, Windows 7, Windows Server 2012 R2, Windows Server 2016

            comments

            комментариев 5

            В этой статье мы рассмотрим, как включить протокол Transport Layer Securit (TLS 1.2) в различных версиях Windows, в том числе для приложений .Net и WinHTTP. Протоколы TLS 1.0 и TLS 1.1 являются устаревшими, и если вы мигрировали все ваши сервисы на TLS 1.2 или TLS 1.3, вы можете отключить поддержку старых версий протоколов на клиентах и серверах Windows (Отключение TLS 1.0 и TLS 1.1 с помощью групповых политик). Но перед этим, вам нужно убедиться, что на всех ваших клиентах поддерживается протокол TLS 1.2.

            В современных версиях Windows (Windows 11/10/8.1 и Windows Server 2022/2019/2016/2012R2) протокол TLS 1.2 включен по-умолчанию. А вот в предыдущих версиях Windows (Windows 7, Windows Server 2008R2/2012), чтобы включить TLS 1.2, придется выполнить ряд предварительных настроек.

            Windows XP и Vista не поддерживают TLS 1.2.

            Например, чтобы включить TLS 1.2 в Windows 7 нужно:

            скачать обновление Windows для поддержки TLS 1.2

            1. Убедится, что у вас установлен Windows 7 SP1;
            2. Скачать и вручную установить MSU обновлениеKB3140245 из Microsoft Update Catalog (https://www.catalog.update.microsoft.com/search.aspx?q=kb3140245);
            3. Далее нужно скачать и установить патч MicrosoftEasyFix51044.msi (патч добавляет в реестр параметры, которые обеспечивают поддержку TLS 1.2 в Windows 7/2008R2/2012);

            Без этих обновлений Outlook на Windows 7 не сможет подключиться к современному почтовому серверу с ошибкой: 0x800CCC1A – Ваш сервер не поддерживает указанный вами тип шифрования. А при открытии некоторых сайтов может появляться ошибка Этот сайт не может обеспечить безопасное соединение.

            На компьютере появятся следующие REG_DWORD параметры реестра в ветке HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client\ и HKLM\. Protocols\TLS 1.2\Servers :

            Чтобы протокол TLS 1.2 использовался по-умолчанию для приложений на WinHttp API, нужно добавить REG_DWORD параметр DefaultSecureProtocols = 0x00000A00 в ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp (на 64 битной версии Windows в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp).

            Возможные значения параметра DefaultSecureProtocols, который определяет разрешенные протоколы для WinHTTP подключений:

            • 0x00000A0 – значение по умолчанию, которое разрешает только SSL 3.0 и TLS 1.0 для WinHTTP;
            • 0x0000AA0 — разрешить использовать TLS 1.1 и TLS 1.2 в дополнении к SSL 3.0 и TLS 1.0;
            • 0x00000A00 – разрешить только TLS 1.1 и TLS 1.2;
            • 0x00000800 – разрешить только TLS 1.2.

            Начиная с Windows 10 и Windows Server 2016, все версии Windows поддерживают TLS 1.2 для коммуникаций через WinHTTP.

            $reg32bWinHttp = «HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp»
            $reg64bWinHttp = «HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp»
            $regWinHttpDefault = «DefaultSecureProtocols»
            $regWinHttpValue = «0x00000800»
            $regTLS12Client = «HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client»
            $regTLS12Server = «HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server»
            $regTLSDefault = «DisabledByDefault»
            $regTLSValue = «0x00000000»

            $regTLSEnabled = «Enabled»
            $regTLSEnableValue = «0x00000001»
            # Для Windows x86
            $test = test-path -path $reg32bWinHttp
            if(-not($test))New-Item -Path $reg32bWinHttp
            >
            New-ItemProperty -Path $reg32bWinHttp -Name $regWinHttpDefault -Value $regWinHttpValue -PropertyType DWORD
            # Для Windows x64
            $test = test-path -path $reg64bWinHttp
            if(-not($test))New-Item -Path $reg64bWinHttp
            >
            New-ItemProperty -Path $reg64bWinHttp -Name $regWinHttpDefault -Value $regWinHttpValue -PropertyType DWORD
            New-Item -Path «HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2”
            New-Item -Path $regTLS12Client
            New-Item -Path $regTLS12Server
            New-ItemProperty -Path $regTLS12Client -Name $regTLSDefault -Value $regTLSValue -PropertyType DWORD
            New-ItemProperty -Path $regTLS12Client -Name $regTLSEnabled -Value $regTLSEnableValue -PropertyType DWORD
            New-ItemProperty -Path $regTLS12Server -Name $regTLSDefault -Value $regTLSValue -PropertyType DWORD
            New-ItemProperty -Path $regTLS12Server -Name $regTLSEnabled -Value $regTLSEnableValue -PropertyType DWORD

            включить TLS 1.2 в реестре windows

            Осталось включить поддержку TLS 1.2 для приложений .NET Framework. Для этого нужно в реестре включить принудительное использование системных протоколов шифрования для приложений .NET 3.5 и 4.x. Если вы используете старые версии NET Framework 4.5.1 или 4.5.2 на Windows Server 2012 R2/2012 или Windows 8.1, сначала установите последние обновления для .Net Framework 4.5.1 (они добавят поддержку TLS 1.2 в .Net).

            Ниже указаны параметры реестра, которые нужно настроить для различных версий .Net:

            для .Net 3.5 и 2.0

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

            Например, без этих параметров вы не сможете подключиться к репозиториям PSGallery из консоли PowerShell на Windows Server 2012 R2 с ошибками:

            • Install-Module: Unable to download from URI
            • Unable to resolve package source

            Проблема тут в в том, что по-умолчанию PowerShell пытается использовать протокол TLS 1.0 для подключения к PSGallery. С апреля 2020 года PowerShell Gallery разрешает подключение к NuGet провайдеру только с помощью TLS 1.2.

            Также существует бесплатная утилита IISCrypto, которая позволяет включить/выключить различные протоколы TLS/SSL и настройки Schannel через графический интерфейс (https://www.nartac.com/Products/IISCrypto/). Здесь вы можете выбрать какие версии протоколов TLS хотите настроить. Если все галки напротив протоколов Schannel серые, значит в Windows используются стандартные настройки. В моем примере я включил протокол TLS 1.2 для клиента и сервера с помощью PowerShell скрипта, рассмотренного ранее. Утилита IISCrypto теперь показывает, что протокол TLS 1.2 включен вручную.

            IISCrypto не позволяет изменить настройки TLS для .NET и WinHTTP.

            IISCrypto утилита - включить TLS 1.2

            В Windows Server 2022 с помощью протокола TLS 1.3 можно включить поддержку HTTP/3 для сайтов IIS.

            Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

            При использовании RDP с шифрованием SSL отображается неправильный ПРОТОКОЛ TLS

            В этой статье описывается решение проблемы, из-за которой протокол SSL (TLS 1.0) отображается в качестве протокола уровня безопасности вместо фактического протокола TLS 1.2.

            Применимо к: Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019
            Исходный номер базы знаний: 3097192

            Симптомы

            Рассмотрим следующий сценарий.

            • У вас есть компьютер под управлением операционной системы Windows Server.
            • На этом компьютере настроена роль посредника подключений к удаленному рабочему столу (RDCB).
            • Вы пытаетесь защитить подключения по протоколу RDP к целевым компьютерам с помощью ssl-шифрования (TLS).

            В этом сценарии можно заметить, что в списке Уровень безопасности отображается протокол SSL (TLS 1.0), даже если в нем фактически используется ПРОТОКОЛ TLS 1.2:

            Уровень безопасности отображает SSL (TLS 1.0) на странице Настройка параметров безопасности.

            Вы также можете заметить аналогичное поведение при попытке настроить параметры уровня безопасности, применив следующий параметр групповая политика:

            Требовать использования определенного уровня безопасности для удаленных подключений (RDP)

            Параметры уровня безопасности в диалоговом окне Требовать использование определенного уровня безопасности для удаленных подключений (RDP).

            Этот параметр находится в следующем расположении:

            Конфигурация компьютера\Политики\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Безопасность

            Разрешение

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

            Дополнительная информация

            Следующее обязательное исправление предоставляет поддержку TLS 1.2 на сервере узла сеансов Windows Server 2008 R2. Это исправление соответствует последним стандартам безопасности PCI DSS.

            3080079 обновление для добавления поддержки RDS для TLS 1.1 и TLS 1.2 в Windows 7 или Windows Server 2008 R2

            Если клиентский компьютер работает под управлением Windows 7, на нем должно быть установлено обновление RDC 8.0, чтобы использовать TLS 1.2. Без обновления RDC 8.0 клиент Windows 7 может использовать только TLS 1.0.

            Обратная связь

            Были ли сведения на этой странице полезными?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *