Поделиться через


Оснастка PowerShell: настройка SSL с помощью оснастки Iis PowerShell

от группы iis

Чтобы включить SSL, необходимо выполнить три шага:

  1. Получение и установка сертификата
  2. Создание привязки SSL в IIS
  3. Назначение сертификата 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, а соглашения об именовании немного отличаются.

  1. В HTTP.SYS необходимо использовать 0.0.0.0, чтобы указать все IP-адреса; в СЛУЖБАх IIS используется звездочка (*).
  2. В 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.