Настройка SSL в IIS 7 или более поздней версии
Введение
Действия по настройке SSL для сайта одинаковы в IIS 7 и более поздних версиях и IIS 6.0 и включают следующее:
- Получите соответствующий сертификат.
- Создайте привязку HTTPS на сайте.
- Протестируйте, выполнив запрос к сайту.
- При необходимости настройте параметры SSL, то есть сделав SSL обязательным требованием.
В этом документе приводятся некоторые основные сведения о SSL, а затем показано, как включить SSL следующими способами.
- Использование диспетчера IIS.
- Использование программы командной строки AppCmd.exe.
- Программным способом с помощью Microsoft.Web.Administration.
- Использование скриптов WMI.
В этом разделе содержатся следующие подразделы:
- Конфигурация SSL
- Использование AppCmd
- Использование инструментария WMI
- Использование диспетчера IIS
- Сводка
Настройка 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, либо получите сертификат из интернет-центра сертификации в домене интрасети. Браузер обычно проверяет в сертификате сервера три вещи:
- Текущие дата и время находятся в пределах диапазона "Действителен с" и "Действителен до" для сертификата.
- Общее имя сертификата соответствует заголовку узла в запросе. Например, если клиент запрашивает
https://www.contoso.com/
, то должно использоваться общее имяwww.contoso.com
. - Издатель сертификата является известным и доверенным ЦС.
В случае сбоя одной или нескольких из этих проверок браузер запрашивает у пользователя предупреждения. Если у вас есть интернет-сайт или сайт интрасети, где конечные пользователи не являются людьми, которых вы знаете лично, следует всегда убедиться, что эти три параметра являются допустимыми.
Самозаверяющий сертификат — это сертификаты, созданные на компьютере. Они полезны в средах, где для конечного пользователя не важно доверять вашему серверу, например в тестовой среде.
Использование 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
Получение сертификата
Выберите узел сервера в представлении в виде дерева и дважды щелкните компонент Сертификаты сервера в представлении списка:
Щелкните Создать сертификат Self-Signed... в области Действия .
Введите понятное имя для нового сертификата и нажмите кнопку ОК.
Теперь у вас есть самозаверяющий сертификат. Сертификат помечен для использования "Проверка подлинности сервера". то есть используется в качестве сертификата на стороне сервера для шифрования HTTP SSL и проверки подлинности удостоверения сервера.
Создание привязки SSL
Выберите сайт в представлении в виде дерева и щелкните Привязки... на панели Действия . Откроется редактор привязок, который позволяет создавать, изменять и удалять привязки для веб-сайта. Нажмите кнопку Добавить... , чтобы добавить новую привязку SSL на сайт.
Параметры по умолчанию для новой привязки имеют значение HTTP на порте 80. Выберите https в раскрывающемся списке Тип . Выберите в раскрывающемся списке SSL-сертификат самозаверяющий сертификат, созданный в предыдущем разделе, и нажмите кнопку ОК.
Теперь у вас есть новая привязка SSL на сайте, и все, что осталось, — это убедиться, что она работает.
Проверка привязки SSL
В области Действия в разделе Обзор веб-сайта щелкните ссылку, связанную с только что созданной привязкой.
Internet Explorer (IE) 7 и более поздних версий отобразит страницу ошибки, так как самозаверяющий сертификат был выдан компьютером, а не доверенным центром сертификации (ЦС). IE 7 и более поздних версий будет доверять сертификату, если добавить его в список доверенных корневых центров сертификации в сертификатах, которые хранятся на локальном компьютере, или в групповая политика для домена.
Щелкните ссылку Продолжить открытие этого веб-сайта (не рекомендуется).
Настройка параметров SSL
Настройте параметры SSL, если вы хотите, чтобы сайт требовал SSL или взаимодействовал с клиентскими сертификатами определенным способом. Щелкните узел сайта в представлении в виде дерева, чтобы вернуться на домашнюю страницу сайта. Дважды щелкните функцию Параметры SSL в средней области.
Сводка
В этом пошаговом руководстве мы успешно использовали программу командной строки AppCmd.exe, WMI поставщика сценариев и диспетчер IIS для настройки SSL в IIS.