Оснастка PowerShell: настройка SSL с помощью оснастки Iis PowerShell
от группы iis
Чтобы включить SSL, необходимо выполнить три шага:
- Получение и установка сертификата
- Создание привязки SSL в IIS
- Назначение сертификата IP:Port привязки IIS
и при необходимости:
- Применение SSL на веб-сайте
Получение и установка сертификата
Приобретение сертификатов — это сложный бизнес. Пользователи веб-сайта должны доверять сертификату, поэтому вы должны получить его из доверенного центра сертификации. Однако в целях тестирования можно создать собственный сертификат. В этом пошаговом руководстве мы будем использовать так называемый самозаверяющий сертификат. Средство, которое помогает нам создать самозаверяющий сертификат, называется MAKECERT и является частью visual Studio SDK Tools. Следующая команда MAKECERT создаст самозаверяющий сертификат и автоматически установит его в хранилище сертификатов Windows my:
makecert -r -pe -n "CN=MyTestServer" -b 07/01/2008 -e 07/01/2010 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
Вы можете просмотреть сертификаты в хранилище сертификатов с помощью поставщика сертификатов:
PS IIS:\> dir cert:\localmachine\my
Directory: Microsoft.PowerShell.Security\Certificate::localmachine\my
Thumbprint Subject
---------- -------
7ABF581E134280162AFFFC81E62011787B3B19B5 CN=MyTestServer
Примечание
Отпечаток сертификата будет отличаться!
Теперь давайте с помощью оснастки IIS PowerShell создадим привязку SSL и свяжите ее с только что созданным сертификатом.
Создание привязки SSL
Мы добавляем привязку SSL на веб-сайт по умолчанию с помощью одного из командлетов на основе задач с именем New-WebBinding:
PS IIS:\> New-WebBinding -Name "Default Web Site" -IP "*" -Port 443 -Protocol https
Вы можете просмотреть коллекцию привязок с помощью следующей команды:
PS IIS:\> Get-WebBinding 'Default Web Site'
protocol bindingInformation
-------- ------------------
http *:80:
https *:443:
Назначение сертификата ip:port привязки IIS
Теперь это немного сложно, так как параметры SSL хранятся в хранилище конфигураций HTTP.SYS, а соглашения об именовании немного отличаются.
- В HTTP.SYS необходимо использовать 0.0.0.0, чтобы указать все IP-адреса; в СЛУЖБАх IIS используется звездочка (*).
- В IIS для разделения привязки используется ":". Так как PowerShell видит двоеточие в качестве индикатора диска, вместо него используется восклицательный знак:
Вы можете перейти в каталог IIS:\SslBindings и запросить существующие привязки SSL. Каталог будет пустым при установке IIS по умолчанию:
PS IIS:\> cd SslBindings
PS IIS:\SslBindings> dir
Теперь вы можете использовать хэш сертификата, полученный на шаге 1, и связать его со всеми IP-адресами (0.0.0.0) и SSL-портом 443:
PS IIS:\SslBindings> get-item cert:\LocalMachine\MY\7ABF581E134280162AFFFC81E62011787B3B19B5 | new-item 0.0.0.0!443
Предыдущая команда сгенерировала следующую привязку SSL:
IP Address Port Store Sites
---------- ---- ----- -----
0.0.0.0 443 My Default Web Site
Протокол SSL готов к работе, и вы можете перейти к сайту, введя https://localhost
.
Итоги
Настроить SSL с помощью PowerShell довольно просто. Необходимо получить сертификат, создать привязку SSL в IIS, а затем использовать IP-адрес и порт привязки IIS, чтобы создать привязку SSL в HTTP.SYS.