- Включить SSL для всех клиентов, которые взаимодействуют с веб-сайтом в IIS
- Аннотация
- Получение сертификата
- Создание CSR
- Запрос сертификата
- Установка сертификата
- Принудительное подключение SSL
- Настройка протоколов TLS на Windows Server
- Проблемы версий протоколов SSL и TLS и совместимости приложений
- Как правильно настроить TLS для разного типа приложений?
- Отключение SSL для Powershell и других .NET приложений
- Включение TLS 1.2 для WinHTTP
- Настройка с помощью IISCrypto
Включить SSL для всех клиентов, которые взаимодействуют с веб-сайтом в IIS
В этой статье описывается, как включить SSL для всех клиентов, которые взаимодействуют с веб-сайтом в Microsoft IIS (IIS).
Исходная версия продукта: Internet Information Services
Исходный номер КБ: 298805
Аннотация
Эта статья содержит следующие разделы:
- Сведения о том, как настроить и включить сертификаты сервера, чтобы клиенты могли быть уверены в том, что ваш веб-сайт действителен и что любые отправляемые им сведения остаются конфиденциальными и конфиденциальными.
- Сведения о том, как использовать сторонние сертификаты для использования SSL, а также общий обзор процесса, используемого для создания запроса подписи сертификата (CSR), который используется для получения стороннее сертификата.
- Как включить SSL-подключение для веб-сайта.
- Как применить протокол SSL для всех подключений и установить требуемую длину шифрования между клиентами и веб-сайтом.
Для двух типов проверки подлинности можно использовать функции безопасности SSL веб-сервера. Вы можете использовать сертификат сервера, чтобы разрешить пользователям аутентификацию веб-сайта перед передачей личных сведений, таких как номер кредитной карты. Кроме того, вы можете использовать клиентские сертификаты для проверки подлинности пользователей, запрашивая информацию на веб-сайте.
В этой статье предполагается, что для проверки подлинности веб-сервера используется сторонний ЦС.
Чтобы включить проверку сертификата SSL Server и обеспечить уровень безопасности, необходимый вашим клиентам, необходимо получить сертификат от стороного ЦС. Сертификаты, выда которыми выданы вашей организации сторонним ЦС, обычно привязаны к веб-серверу и, в частности, к веб-сайту, к которому необходимо привязать SSL. Вы можете создать собственный сертификат с сервером IIS, но в этом случае ваши клиенты должны неявно доверять вам как к сертификату.
Статья предполагает следующее:
- Вы установили IIS.
- Создан и опубликован веб-сайт, который необходимо защитить с помощью SSL.
Получение сертификата
Чтобы начать процесс получения сертификата, необходимо создать CSR. Это можно сделать с помощью консоли управления IIS; Поэтому перед созданием CSR необходимо установить IIS. CSR — это, по сути, сертификат, который создается на сервере, который проверяет сведения о сервере, относящаяся к компьютеру, при запросе сертификата у стороне ЦС. CSR — это просто зашифрованное текстовое сообщение, зашифрованное парой открытого и закрытого ключей.
Как правило, в CSR, который вы создаете, включаются следующие сведения о компьютере:
- Организация
- Подразделение
- Страна
- Состояние
- Locality
- Общее имя
Общее имя обычно состоит из имени хост-компьютера и домена, к которому оно принадлежит, например xyz.com. В этом случае компьютер является частью домена .com и называется XYZ. Это может быть корневой сервер для корпоративного домена или просто веб-сайт.
Создание CSR
Доступ к консоли управления (MMC) IIS. Для этого щелкните правой кнопкой мыши «Мой компьютер» и выберите «Управление». Откроется консоль управления компьютером. Разорите раздел «Службы и приложения». Найдите IIS и разйдите консоль IIS.
Выберите конкретный веб-сайт, на который необходимо установить сертификат сервера. Щелкните сайт правой кнопкой мыши и выберите «Свойства».
Выберите вкладку «Безопасность каталога». В разделе «Безопасная связь» выберите сертификат сервера. Запускается мастер сертификатов веб-сервера. Нажмите кнопку Далее.
Выберите «Создать новый сертификат» и «Далее».
Выберите «Подготовить запрос» сейчас, но отправьте его позже и выберите «Далее».
В поле «Имя» введите имя, которое можно запомнить. По умолчанию он будет называться веб-сайтом, для которого создается CSR.
При генерации CSR необходимо указать длину бита. Длина бита ключа шифрования определяет силу зашифрованного сертификата, отправляемого в сторонний ЦС. Чем выше длина бита, тем надкрепнее шифрование. Большинство сторонних ЦС предпочитают не менее 1024 бит.
В разделе «Сведения об организации» введите сведения об организации и подразделении. Это должно быть точным, так как вы представляете эти учетные данные стороне ЦС и должны соответствовать их лицензированию сертификата. Выберите «Далее», чтобы получить доступ к разделу «Общее имя сайта».
Раздел «Общее имя сайта» отвечает за привязку сертификата к веб-сайту. Для SSL-сертификатов введите имя хост-компьютера с именем домена. Для серверов интрасети можно использовать netBIOS-имя компьютера, на который размещен сайт. Выберите «Далее», чтобы получить доступ к географическим данным.
Введите сведения о стране, регионе или регионе, а также о стране или регионе. Полностью орфографию вашего штата, области и страны или региона; не используйте аббревиатуры. Нажмите кнопку Далее.
Сохраните файл в TXT-файле.
Подтвердите сведения о запросе. Выберите «Далее», чтобы завершить работу, и выйдите из мастера сертификатов веб-сервера.
Запрос сертификата
Существует несколько способов отправки запроса. Обратитесь к поставщику сертификатов по вашему выбору, чтобы использовать метод и определить оптимальный уровень сертификата для ваших потребностей. В зависимости от метода, выбранного для отправки запроса в ЦС, вы можете отправить CSR-файл с шага 10 в разделе «Создание CSR» или в файл может потребоваться вслать содержимое этого файла в запрос. Этот файл будет зашифрован и будет содержать заглавный и footer для содержимого. При запросе сертификата необходимо включить и заглавный, и footer. Ваш CSR должен иметь следующий сходство:
Установка сертификата
После того как сторонний ЦС завершит запрос сертификата сервера, вы получите его по электронной почте или на сайте загрузки. Сертификат должен быть установлен на веб-сайте, на котором необходимо обеспечить безопасную связь.
Чтобы установить сертификат, выполните следующие действия.
- Скачайте или скопируйте сертификат, полученный из ЦС, на веб-сервер.
- Откройте MMC IIS, как описано в разделе «Создание CSR».
- Доступ к диалоговом окну «Свойства» для веб-сайта, на котором устанавливается сертификат.
- Выберите вкладку «Безопасность каталога» и выберите сертификат сервера. Запускается мастер сертификатов веб-сервера. Нажмите кнопку Далее.
- Выберите «Обработка ожидающих запросов» и установите сертификат, а затем выберите «Далее».
- Перейдите к расположению сертификата, сохраненного на шаге 1. Дважды выберите «Далее» и «Готово».
Принудительное подключение SSL
После установки сертификата сервера можно обеспечить связь безопасного канала SSL с клиентами веб-сервера. Сначала необходимо включить порт 443 для безопасного взаимодействия с веб-сайтом. Для этого выполните следующие действия:
- В консоли управления компьютером щелкните правой кнопкой мыши веб-сайт, на котором необходимо принудительно применить SSL, и выберите «Свойства».
- Выберите вкладку «Веб-сайт». В разделе «Идентификация веб-сайта» убедитесь, что поле порта SSL заполнено числом 443.
- Выберите Дополнительно. Вы должны увидеть два поля. IP-адрес и порт веб-сайта уже должны быть указаны в поле «Несколько удостоверений» для этого веб-сайта. В поле «Несколько удостоверений SSL» для этого веб-сайта выберите «Добавить», если порт 443 еще не указан. Выберите IP-адрес сервера и введите числовые значения 443 в поле порта SSL. Нажмите OK.
Теперь, когда порт 443 включен, можно применять SSL-подключения. Для этого выполните следующие действия:
Выберите вкладку «Безопасность каталога». В разделе «Безопасная связь» теперь доступна правка. Нажмите кнопку Изменить.
Выберите «Требовать безопасный канал (SSL)«.
Если указать 128-битное шифрование, клиенты, которые используют 40- или 56-битный браузер, не смогут взаимодействовать с сайтом, если не обновят уровень шифрования.
Откройте браузер и попробуйте подключиться к веб-серверу по стандартному http:// протоколу. Если выполняется принудительное применение SSL, вы получите следующее сообщение об ошибке:
Страницу необходимо просмотреть по безопасному каналу
Страница, которая вы пытаетесь просмотреть, требует использования https в адресе.
Попробуйте следующее: попробуйте еще раз, https:// в начале адреса, к который вы пытаетесь связаться. HTTP 403.4 — запрещено: для SSL требуются службы Internet Information Services
Техническая информация (для сотрудников службы поддержки): эта ошибка указывает, что страница, к которую вы пытаетесь получить доступ, защищена с помощью SSL.
Теперь вы можете подключаться к веб-сайту только с помощью https:// протокола.
Настройка протоколов 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 она не настраивает.
Скачать её можно с сайта разработчика без регистрации.