IIS 8: Улучшенное управление сертификатами

OSzone.net » Microsoft » Windows Server 2012/2012 R2 » IIS 8: Улучшенное управление сертификатами
Автор: Джейсон Хелмик
Иcточник: TechNetMagazine
Опубликована: 16.05.2013

Гениально простое решение сложной проблемы — как глоток свежего воздуха. Именно такое сравнение уместно для нового центрального хранилища сертификатов (CCS, central certificate store) в IIS 8. В предыдущих версиях IIS сертификаты устанавливали на веб-фермы с помощью Windows PowerShell Remoting. Это целесообразно, если вы работаете с IIS на старых серверах. Однако если вы один из счастливчиков, осуществивших обновление до IIS 8, то вскоре вы обнаружите, что процесс работы с сертификатами приятен как легкий ветерок.

Займитесь подготовкой хранилища

CCS основано на истинно простом принципе. Поместите все сертификаты в общий ресурс Windows File Server, затем сделайте так, чтобы привязки веб-сайтов использовали эти сертификаты вместо установленных локально. Это не только уменьшит хаос, вносимый установкой сертификатов на несколько серверов, но и значительно сократит затраты времени на управление и усилий на поиск сертификатов, которые вскоре истекут.

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

Если вы используете веб-ферму, у вас уже имеется кластерный файловый сервер — или распределенная файловая система (Distributed File System, DFS) — доступный для вашей конфигурации совместного доступа к данным. Это отличное место, в котором можно создать еще один общий ресурс для сертификатов. Создайте учетную запись пользователя с правами на чтение из этого ресурса, и все будет готово.

При поиске сертификатов в хранилище CCS берет имя хоста из привязки веб-сайта и ищет файл с точно таким же именем и разширением .pfx. Например, если имеется два веб-сайта с именами хостов www.WebBikez.com и www.MyCompany.com, то файлы сертификатов должны иметь имена:

Заметьте: если в сертификатах используются знаки подстановки (*.MyCompany.com), следует заменить их на подчеркивания (_.MyCompany.com.pfx).

Можно добавлять сертификаты в этот общий ресурс всякий раз, когда вы добавляете веб-сайты. Установка сертификатов на веб-серверы больше не нужна. Следующий шаг — установка и настройка CCS на ваших веб-серверах с IIS 8, которая позволит использовать эти сертификаты.

Установка CCS

Процесс установки несложен. Ее можно осуществить с помощью графических средств управления или Windows PowerShell. Далее речь пойдет о процессе установки CCS на локальный веб-сервер. Об установке на удаленные веб-серверы, в том числе с Windows Server 2012 Core, я расскажу в последнем разделе.

Прежде всего, вы должны установить на свой веб-сервер Centralized SSL Certificate Support. Вы можете воспользоваться графическими инструментами Server Manager или выполнить командлет Install-WindowsFeature в Windows PowerShell:

PS> Install-WindowsFeature Web-CertProvider

После успешной установки этого средства вы увидите новый значок в IIS Manager в разделе Management (рис. 1).

*

Рис. 1. Значок CCS в разделе Management диспетчера IIS Manager

Щелкните значок, чтобы открыть форму настройки CCS (рис. 2). Активизируйте CCS, затем укажите UNC общего каталога и учетную запись пользователя с правами на чтение из ресурса.

*

Рис. 2. Имеется графическая форма настройки центрального хранилища сертификатов

Заметьте: внизу формы можно указать пароль для закрытого ключа, если вы экспортировали .pfx-файл с паролем. Как правило, сертификаты экспортируют с паролями, поэтому в предыдущем примере введен пароль.

Эти графические инструменты достаточно просты в использовании, когда нужно активизировать и настроить CCS на одном локальном сервере. Если требуется автоматизировать процесс, можно воспользоваться Windows PowerShell. При такой установке CCS понадобится шесть командлетов:

Имена этих командлетов достаточно понятно их описывают, кроме того, для них имеются справочные файлы. Вот пример активизации и настройки CCS на локальном веб-сервере с помощью командлета Enable-WebCentralCertProvider:

PS> Enable-WebCentralCertProvider -CertStoreLocation \\serverdc\certstore -UserName company\certuser -Password P@ssw0rd -PrivateKeyPassword P@ssw0rd

Создание привязок веб-сайтов

Последний этап процесса — создание, модификация или добавление привязок веб-сайта, использующего CCS (рис. 3). Обратите внимание, что появился новый флажок «Use Centralized Certificate Store».

*

Рис. 3. Последний этап — привязка веб-сайта к центральному хранилищу сертификатов

Вот пример того, как с помощью Windows PowerShell создать веб-сайт с корректной SSL-привязкой. Вся соль в параметре –SslFlags командлета New-WebSite. SSLFlags определяет, где находится сертификат, используемый при привязке. При хранении в CCS задайте значение 2 или 3, в зависимости от того, используете ли вы Server Name Indication (SNI). Вот его возможные значения:

Вот как создать пул приложений и веб-сайт с использованием SNI-сертификата в CCS:

PS C:\> New-WebAppPool -Name WebBikez_pool

PS C:\> New-Website -Name WebBikez -HostHeader www.WebBikez.com -PhysicalPath c:\inetpub\wwwroot -ApplicationPool webbikez_Pool -Ssl -port 443 -SslFlags 3 -force

Если вам просто нужно добавить привязку к существующему веб-сайту, сделайте это так:

PS C:\> New-WebBinding -Name "WebBikez" -Protocol https -Port 443 -HostHeader www.WebBikez.com –SslFlags 3

Установка CCS на удаленные веб-серверы

Вы можете выполнять все эти команды, используя Windows PowerShell Remoting. Подсоединение к удаленным серверам (в т.ч. и с Windows Server 2012 Core) и установка на них CCS, не представляют сложности.

Создайте сеанс удаленного доступа командлетом New-PSSession:

PS C:\> $Sessions=New-PSSession -ComputerName server2,server3

Установите CCS на удаленные компьютеры:

PS C:\> Invoke-Command -Session $sessions {Install-WindowsFeature Web-CertProvider}

Здесь начинаются сложности. У командлета Enable-WebCentralCertProvider имеется параметр CertStoreLocation, принимающий сетевой ресурс, в котором находится сертификаты. Дело в том, что командлет пытается проверить доступность общего ресурса перед записью информации в реестр.

В Windows PowerShell Remoting это приводит к проблеме нескольких переходов. Вы соединяетесь с удаленным компьютером, который, в свою очередь, пытается соединиться с удаленным компьютером. Скорее всего, через какое-то время группа разработки IIS поправит командлет. А пока они это не сделали, можно пользоваться обходным путем. Просто вручную добавьте записи в реестр.

Чтобы активизировать CCS:

Invoke-Command -Session $sessions {Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\IIS\CentralCertProvider\ -Name Enabled -Value 1}

Чтобы задать местонахождение общего ресурса для сертификатов:

Invoke-Command -Session $sessions {Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\IIS\CentralCertProvider\ -Name CertStoreLocation -Value \\ServerDC\CertStore}

Вы не сможете напрямую записать в реестр имя пользователя и пароль, но эту оставшуюся часть работы выполнит командлет Set-WebCentralCertProvider:

Invoke-Command -Session $sessions {Set-WebCentralCertProvider -Password P@ssw0rd -UserName Company\certuser -PrivateKeyPassword P@ssw0rd}

Теперь вы можете добавить веб-привязки своих веб-сайтов для HTTPS, используя Windows PowerShell Remoting, и все будет готово. Если у вас не было повода опробовать IIS 8, вполне возможно, что знание того, как работает CCS, будет убедительной с точки зрения бизнеса причиной поэкспериментировать с ним. Это всего лишь одна из новых возможностей IIS 8, которые следует принимать во внимание при дальнейшем движении вперед.


Ссылка: http://www.oszone.net/20535/IIS-8