Установка бесплатного SSL сертификата Let’s Encrypt на IIS в Windows Server 2012 R2

Наличие SSL сертификата для сайта позволяет защитить данные пользователей, передаваемые по сети от атак человек-посередине (man-in-the-middle) и гарантировать целостность переданных данных В этом обзоре мы расскажем об особенности установки и привязки бесплатного SSL сертификата от Let’s Encrypt для сайта IIS, запущенного на Windows Server 2012 R2.

Пара слов о Let’s Encrypt – это некоммерческий центр сертификации, позволяющий в автоматическом режиме через API выпускать бесплатные SSL/TLS сертификаты. Выдаются только сертификаты для валидации доменов (domain validation), со сроком действия 90 дней, что не является проблемой из-за наличия встроенной возможности автоматического перевыпуска сертификата, в результате чего можно непрерывность защиты.

API интерфейс, позволяющий автоматически выпускать сертификаты называется Automated Certificate Management Environment (ACME) API. Для Windows систем на данный момент имеется 3 реализации клиента ACME API:

  • Утилита LetsEncrypt-Win-Simple – утилита командной строки для интерактивного выпуска сертификата и привязки его к определенному сайту на вашем веб сервере IIS
  • Модуль Powershell ACMESharp – библиотека Powershell с множеством команд для взаимодействия через ACME API с серверами Let’s Encrypt
  • Certify – графическая утилита для интерактивного управления сертификатами через ACME API (на данный момент функционал еще не полный, но проект развивается)

Самый простой способ получить SSL сертификат от Let’s Encrypt — воспользоваться консольной утилитой LetsEncrypt-Win-Simple. Она представляет собой простой мастер, который позволяет выбрать один из сайтов, запущенных на IIS, и автоматически выпустить и привязать к нему SSL сертификат.

Итак, предположим у нас имеется веб сайт на IIS, развёрнутый под управлением Windows Server 2012 R2. Наша задача, переключить его в HTTPS режим, установив SSL сертификат от Let’s Encrypt.

Скачайте последний релиз клиента со страницы проекта на GitHub https://github.com/Lone-Coder/letsencrypt-win-simple (в моем случае это была версия v1.9.7.0).

github скачать LetsEncrypt-Win-SimpleРаспакуйте его в каталог на сервере с IIS: c:\inetpub\letsencrypt

letsencrypt.exeОткройте командную строку с правами администратора, перейдите в каталог c:\inetpub\ letsencrypt и запустите letsencrypt.exe.

Запустится интерактивный мастер, который сначала попросит указать ваш email на который будут отправляться уведомления о проблемах с обновлением сертификата и согласиться с пользовательским соглашением.

пользовательское соглашениеЗатем нужно будет выбрать, что необходимо создать новый сертификат (N: Create new certificate) и выбрать тип сертификата (в нашем примере нет необходимости использовать сертификат с несколькими SAN), поэтому достаточно выбрать пункт 1. Single binding of an IIS site.

Далее утилита выведет список запущенных на IIS сайтов и предложит выбрать сайт, для которого нужно выпустить сертификат.

letsencrypt выбор сайта IIS к которому нужно выпустить и привязать сертфикатСледующий этап – выполнение валидации домена. Доступно несколько вариантов валидации: TLS, через запись в DNS или через HTTP). Самый простой вариант — выбрать пункт 4 [http-01] Create temporary application in IIS (recommended). В этом случае на веб-сервере будет создано небольшое приложение, через которое сервера Let’s Encrypt смогут провести валидацию.

letsencrypt - валидация домена

Примечание. При выполнении TLS/HTTP проверки ваш сайт должен быть доступен снаружи по полному DNS имени по протоколам HTTP (80/TCP) и HTTPS (443/TCP).

После валидации утилита letsencrypt-win-simple автоматически отправит запрос на генерацию сертификата, скачает его (все необходимые файлы, а также закрытый ключ сохраняются в каталог C:\Users\Administrator\AppData\Roaming\letsencrypt-win-simple) и создаст привязку на сайте IIS.

В том случае, если на сайте уже установлен SSL сертификат, он будет заменен новым.

привязанный к сайту iis сертфикат sslКроме того, будет создано правило в планировщике заданий Windows, которое запускается каждый день и автоматически выпускающее и устанавливающее новый сертификат каждые 60 дней.

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

LetsEncrypt --renew

Чтобы перенаправить весь входящий HTTP трафик на HTTPS сайт, нужно установить модуль Microsoft URL Rewrite Module, и убедиться, что в настройках сайте не включена опция обязательного использования SSL (Require SSL). Осталось настроить редирект в файле web.config:

<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS Redirect" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>

Отметим, что сертификаты Let’s Encrypt в настоящий момент широко используются на сайтах многих крупных компаний и  им доверяют все браузеры. Надеюсь, что судьба бесплатного центра сертификации Let’s Encrypt не постигнет участь WoSign и StartCom.

(Пока оценок нет)
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x