Как установить SSL на IIS 7

Введение

Общие действия по конфигурированию SSL на IIS 7 те же самые, что и на IIS 6.0:

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

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

  • С использованием графического пользовательского интерфейса IIS Manager.
  • С использованием инструмента командной строки AppCmd.exe
  • Программно через Microsoft.Web.Administration
  • Через сценарии WMI

Конфигурация SSL

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

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

netsh http show sslcert

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

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

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

Вы хотите, чтобы конечные пользователи могли проверить удостоверение вашего сервера с вашим сертификатом? Если да, то вам нужно либо создать запрос сертификата и отправить этот запрос в известный центр сертификации, например, VeriSign или GeoTrust, либо получить сертификат от онлайнового центра сертификации в вашем домене интрасети.  Есть три вещи, которые браузер обычно делает при проверке сертификата сервера:

  1. Сравнивает текущую дату/время с датами «Действителен от» и «Действителен до» сертификата.
  2. Сопоставляет общее имя (Common Name, CN) сертификата c заголовком хоста в запросе, например, если клиент сделал запрос https://www.contoso.com/, то CN также должен быть https://www.contoso.com/.
  3. Проверяет, чтобы поставщиком сертификата был известный и доверенный центр сертификации.

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

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

AppCmd

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

Конфигурирование настроек SSL

Вы можете использовать appcmd, чтобы сконфигурировать сайт только на серверные подключения https, изменив атрибут sslFlags в разделе доступа. Например, сделайте эту настройку для «Default Web Site» в файле applicationHost.config (т.е. –commitPath:APPHOST):

D:\Windows\system32\inetsrv>appcmd set config "Default Web Site" -commitPath:APPHOST -section:access -sslFlags:Ssl

Примените эти изменения к разделу «system.webServer/security/access» для «MACHINE/WEBROOT/APPHOST/Default Web Site» в пути применения конфигурации «MACHINE/WEBROOT/APPHOST».

Чтобы установить требование 128-битного сертификата SSL, измените значение sslFlags на Ssl128.

В приведенном ниже примере показано, как просмотреть настройки раздела <access/> для Default Web Site. Атрибут sslFlags был успешно установлен:

D:\Windows\system32\inetsrv>appcmd list config "Default Web Site" -section:access

Результат:

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

WMI

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

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

Этот скрипт показывает, как создать новую привязку HTTPS и добавить соответствующую конфигурацию в HTTP.sys и IIS 7:

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через поставщика IIS 7 WMI:

This value can be found in the IIS_Schema.xml file
                      

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_

IIS Manager

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

Выберите узел сервера в представлении в виде дерева и сделайте двойной клик на функции Server Certificates в списке:

На панели Actions щелкните на Create Self-Signed Certificate...

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

Теперь у вас есть самозаверяющий сертификат. Этот сертификат отмечен для использования «Server Authentication», т.е. использования в роли серверного сертификата для шифрования SSL HTTP и для аутентификации удостоверений сервера.

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

Выберите сайта в представлении в виде дерева и щелкните Bindings...  на панели Actions. Появится редактор привязки, который позволяет вам создавать, редактировать или удалять привязки для вашего веб-сайта. Нажмите на кнопку Add..., чтобы добавить вашу новую привязку к сайту.

Новая привязка по умолчанию установлена для http на порт 80. В выпадающем списке Type выберите https . Из выпадающего списка SSL Certificate выберите созданный вами ранее замозаверяющий сертификат и нажмите OK.

Теперь у вас есть новая привязка SSL для вашего сайта и все, что остается, это просто проверить ее работу.

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

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

IE7 покажет вам страницу ошибки, поскольку самозаверяющий сертификат был выпущен вашей машиной, а не доверенным центром сертификации. IE7 будет доверять этому сертификату, если вы добавите его в список доверенных корневых центров сертификации в хранилище сертификатов на локальной машине или в групповую политику для домена. Нажмите Continue to this website (not recommended).

Конфигурирование настроек SSL

Конфигурируйте настройки SSL, если вы хотите, чтобы ваш сайт требовал использования SSL или особым образом взаимодействовал с клиентскими сертификатами. Щелкните на узле сайта в представлении в виде дерева для возврата к домашней странице сайта. Сделайте двойной клик на функции SSL Settings на центральной панели.

Заключение

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