Настройка SSL в IIS 7 или более поздней версии

Саад Ладки (Saad Ladki)

Введение

Действия по настройке SSL для сайта одинаковы в IIS 7 и более поздних версиях и IIS 6.0 и включают следующее:

  • Получите соответствующий сертификат.
  • Создайте привязку HTTPS на сайте.
  • Протестируйте, выполнив запрос к сайту.
  • При необходимости настройте параметры SSL, то есть сделав SSL обязательным требованием.

В этом документе приводятся некоторые основные сведения о SSL, а затем показано, как включить SSL следующими способами.

  • Использование диспетчера IIS.
  • Использование программы командной строки AppCmd.exe.
  • Программным способом с помощью Microsoft.Web.Administration.
  • Использование скриптов WMI.

В этом разделе содержатся следующие подразделы:

Настройка SSL

Независимо от того, используете ли вы веб-сайт на собственном сервере или в облаке, использование SSL для защиты сайта, вероятно, крайне важно для вас, так как многие веб-сайты обращаются к нему для защиты конфиденциальности пользователей. Если необходимо настроить SSL на сервере, важно понимать, что реализация SSL изменилась с IIS 6.0 на IIS 7 и более поздних версий. В IIS 6.0 в Windows Server 2003 вся конфигурация SSL хранилась в метабазе IIS, а шифрование и расшифровка выполнялись в пользовательском режиме (для выполнения большого количества переходов между ядром и пользователем). В IIS 7 и более поздних версиях HTTP.sys обрабатывает шифрование и расшифровку SSL в режиме ядра, что на 20 % выше обеспечивает более высокую производительность безопасных подключений в IIS 7 и более поздних версий, чем в IIS 6.0.

Использование SSL в режиме ядра требует хранения сведений о привязке SSL в двух местах. Во-первых, привязка хранится в %windir%\System32\inetsrv\config\applicationHost.config для вашего сайта. При запуске сайта СЛУЖБЫ IIS отправляют привязку в HTTP.sys, а HTTP.sys начинает прослушивать запросы по указанному IP:Port (это работает для всех привязок). Во-вторых, конфигурация SSL, связанная с привязкой, хранится в конфигурации HTTP.sys. Используйте команду netsh в командной строке, чтобы просмотреть конфигурацию привязки SSL, хранящуюся в HTTP.sys, как показано в следующем примере:

netsh http show sslcert

Когда клиент подключается и инициирует согласование SSL, HTTP.sys ищет в своей конфигурации SSL пару IP:Порт, к которой подключен клиент. Конфигурация HTTP.sys SSL должна включать хэш сертификата и имя хранилища сертификатов, прежде чем согласование SSL будет успешно выполнено.

Совет по устранению неполадок: Если у вас возникли проблемы с привязкой SSL, убедитесь, что привязка настроена в ApplicationHost.config и что хранилище HTTP.sys содержит допустимый хэш сертификата и имя хранилища для привязки.

Выбор сертификата

При выборе сертификата учитывайте следующее: Должны ли конечные пользователи иметь возможность проверять удостоверение сервера с помощью сертификата? Если да, создайте запрос на сертификат и отправьте его в известный центр сертификации (ЦС), например VeriSign или GeoTrust, либо получите сертификат из интернет-центра сертификации в домене интрасети. Браузер обычно проверяет в сертификате сервера три вещи:

  1. Текущие дата и время находятся в пределах диапазона "Действителен с" и "Действителен до" для сертификата.
  2. Общее имя сертификата соответствует заголовку узла в запросе. Например, если клиент запрашивает https://www.contoso.com/, то должно использоваться общее имя www.contoso.com.
  3. Издатель сертификата является известным и доверенным ЦС.

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

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

Использование AppCmd

Вы не можете запросить или создать сертификат с помощью AppCmd.exe. Вы также не можете использовать AppCmd.exe для создания привязки SSL.

Настройка параметров SSL

С помощью AppCmd.exe можно настроить сайт для приема только серверных ПОДКЛЮЧЕНИй HTTPS, изменив атрибут sslFlags в разделе Access. Например, этот параметр можно настроить для веб-сайта по умолчанию в файле ApplicationHost.config (например, commitPath:APPHOST) с помощью следующей команды:

%windir%\system32\inetsrv>AppCmd set config "Default Web Site" -commitPath:APPHOST -section:access -sslFlags:Ssl

В случае успешного выполнения отображается следующее сообщение:

Applied configuration changes to section "system.webServer/security/access" for "MACHINE/WEBROOT/APPHOST/Default Web Site" at configuration commit path "MACHINE/WEBROOT/APPHOST"

Примечание

Чтобы требовать 128-разрядное значение SSL, измените значение sslFlags на Ssl128.

В следующем примере показано, как просмотреть <параметры доступа или> раздела для веб-сайта по умолчанию. Атрибут sslFlags успешно задан.

%windir%\system32\inetsrv>AppCmd list config "Default Web Site" -section:access

При выполнении команды в файле ApplicationHost.config будет указана следующая запись:

<system.webServer>
  <security>
    <access flags="Script, Read" sslFlags="Ssl" />
  </security>
</system.webServer>

Использование инструментария WMI

Вы не можете запросить или создать сертификат с помощью пространства имен WMI WebAdministration.

Создание привязки SSL

В следующем скрипте показано, как создать привязку SSL и добавить соответствующую конфигурацию для HTTP.sys и IIS:

Set oIIS = GetObject("winmgmts:root\WebAdministration")
'''''''''''''''''''''''''''''''''''''''''''''
' CREATE SSL BINDING
'''''''''''''''''''''''''''''''''''''''''''''

oIIS.Get("SSLBinding").Create _ 
   "*", 443, "4dc67e0ca1d9ac7dd4efb3daaeb15d708c9184f8", "MY"
'''''''''''''''''''''''''''''''''''''''''''''
' ADD SSL BINDING TO SITE
'''''''''''''''''''''''''''''''''''''''''''''

Set oBinding = oIIS.Get("BindingElement").SpawnInstance_
oBinding.BindingInformation = "*:443:"
oBinding.Protocol = "https"

Set oSite = oIIS.Get("Site.Name='Default Web Site'")
arrBindings = oSite.Bindings

ReDim Preserve arrBindings(UBound(arrBindings) + 1)
Set arrBindings(UBound(arrBindings)) = oBinding

oSite.Bindings = arrBindings
Set oPath = oSite.Put_

Примечание

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

Настройка параметров SSL

В следующем скрипте показано, как задать параметры SSL с помощью поставщика WMI IIS. Это значение можно найти в файле IIS_Schema.xml.

CONST SSL = 8  
Set oIIS = GetObject("winmgmts:root\WebAdministration")  
Set oSection = oIIS.Get(\_  
 "AccessSection.Path='MACHINE/WEBROOT/APPHOST',Location='Default Web Site'")  
oSection.SslFlags = oSection.SslFlags OR SSL  
oSection.Put\_ <a id="IISManager"></a>

IIS Manager

Получение сертификата

Выберите узел сервера в представлении в виде дерева и дважды щелкните компонент Сертификаты сервера в представлении списка:
Снимок экрана: узел сервера ALEXIS E 3 L H Домашняя страница с выбранным параметром

Щелкните Создать сертификат Self-Signed... в области Действия .
Снимок экрана: область

Введите понятное имя для нового сертификата и нажмите кнопку ОК.

Теперь у вас есть самозаверяющий сертификат. Сертификат помечен для использования "Проверка подлинности сервера". то есть используется в качестве сертификата на стороне сервера для шифрования HTTP SSL и проверки подлинности удостоверения сервера.

Создание привязки SSL

Выберите сайт в представлении в виде дерева и щелкните Привязки... на панели Действия . Откроется редактор привязок, который позволяет создавать, изменять и удалять привязки для веб-сайта. Нажмите кнопку Добавить... , чтобы добавить новую привязку SSL на сайт.

Снимок экрана: диалоговое окно

Параметры по умолчанию для новой привязки имеют значение HTTP на порте 80. Выберите https в раскрывающемся списке Тип . Выберите в раскрывающемся списке SSL-сертификат самозаверяющий сертификат, созданный в предыдущем разделе, и нажмите кнопку ОК.

Снимок экрана: диалоговое окно

Теперь у вас есть новая привязка SSL на сайте, и все, что осталось, — это убедиться, что она работает.
Снимок экрана: диалоговое окно привязки сайта с привязками H T T P и H T T P S.

Проверка привязки SSL

В области Действия в разделе Обзор веб-сайта щелкните ссылку, связанную с только что созданной привязкой.
Снимок экрана: раздел

Internet Explorer (IE) 7 и более поздних версий отобразит страницу ошибки, так как самозаверяющий сертификат был выдан компьютером, а не доверенным центром сертификации (ЦС). IE 7 и более поздних версий будет доверять сертификату, если добавить его в список доверенных корневых центров сертификации в сертификатах, которые хранятся на локальном компьютере, или в групповая политика для домена. Щелкните ссылку Продолжить открытие этого веб-сайта (не рекомендуется).
Снимок экрана: Internet Explorer с ошибкой сертификата безопасности. Перейти на этот веб-сайт (не рекомендуется) подчеркивается.

Настройка параметров SSL

Настройте параметры SSL, если вы хотите, чтобы сайт требовал SSL или взаимодействовал с клиентскими сертификатами определенным способом. Щелкните узел сайта в представлении в виде дерева, чтобы вернуться на домашнюю страницу сайта. Дважды щелкните функцию Параметры SSL в средней области.

Снимок экрана: область параметров SSL, для которой требуется SSL и игнорируются сертификаты клиента.

Сводка

В этом пошаговом руководстве мы успешно использовали программу командной строки AppCmd.exe, WMI поставщика сценариев и диспетчер IIS для настройки SSL в IIS.