Аверс
February 15, 2025

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

Наличие TLS/SSL сертификата у сайта позволяет защитить данные пользователей, передаваемые по сети от атак человек-посередине (man-in-the-middle) и гарантировать целостность переданных данных.

Некоммерческий центр сертификации Let’s Encrypt позволяет в автоматическом режиме через API выпускать бесплатные криптографические TLS сертификаты X.509 для шифрования (HTTPS)

Сайт работает по незащищенному протоколу HTTP без SSL сертификата

Замок означает, что сайт работает по защищенному протоколу HTTPS с SSL сертификатом

Подготовительные работы

Пункт 1. Убедиться, что у вас есть доменное имя, для которого будем выпускать сертификат, например crm.averstech.ru
Проверяем доступность сайта по незащищенному протоколу HTTP:

Примечание. Сертификат выпускается строго для конкретного доменного имени и не может быть использован для другого.

Если сайт не доступен нужно убедиться, что доменное имя прописано в DNS зоне регистратора доменных имен

Убедиться, что на маршрутизаторе выполнен проброс 80 порта до локального хоста, на котором запущен IIS (сайт)

Пункт 2. Сертификат будет выпускаться на компьютере, где запущен IIS. Нужно убедиться, что на на локальном компьютере сайт открывается по доменному имени http://crm.averstech.ru/reports/login.aspx

Если сайт не открывается, нужно проверить корректность настроек маршрутизации, возможно требуется прописать обратный маршрут для (пример)

Пункт 3. На маршрутизаторе нужно добавить проброс порта 443, по которому будет работать HTTPS, аналогично пробросу порта 80.

Пункт 4. Скачайте программу ACME Simple (WACS).

Пункт 5. Проверьте доступность сайта https://acme-v02.api.letsencrypt.org/

Опционально может потребоваться следующее, но в общем случае не обязательно.

В брандмауэре Windows
откройте Дополнительные параметрыПравила для входящих подключенийСоздать правилоДля порта, в поле Определённые локальные порты впишите через запятую порты 80 и 443 и нажмите Далее. Затем выберите пункт Разрешить подключение, снова нажмите Далее, укажите для каких профилей будет применяться правило (по умолчанию для всех) и после нажатия кнопки Далее сохраните правило под любым именем.

Либо через командную сроку:
Для HTTP

netsh advfirewall firewall add rule name="HTTP" protocol=TCP localport=80 action=allow dir=IN

Для HTTPS

netsh advfirewall firewall add rule name="HTTPS" protocol=TCP localport=443 action=allow dir=IN

HTTP+HTTPS

netsh advfirewall firewall add rule name="HTTP+HTTPS" protocol=TCP localport=80,443 action=allow dir=IN

Устанавливаем SSL сертификат

Запускаем wacs.exe с правами Администратора и выполняем следующие шаги:

Пишем m и нажимаем ENTER

Пункт 2, ENTER

Вписываем наше доменное имя crm.averstech.ru и 2 раза ENTER

Важно. Имя сайта crm.averstech.ru должно быть без http://, без портов, без лишних символов! Иначе сертификат не сработает.

Следуем шагам из картинки

Следуем шагам из картинки.

Проверяем привязку сертификата в IIS.
Если привязки не создались — прописываем вручную.

Открываем Управление компьютером и переходим в раздел «Привязки»

Проверяем привязку к 443 порту и форму как показано на картинке:

Привязки:

Проверяем доступность сайта по протоколу HTTPS

Если сайт открылся, значит все сделано правильно.

Автопродление сертификата

Windows ACME Simple создает новое правило в планировщике заданий Windows (win-acme-renew (acme-v02.api.letsencrypt.org)) для автоматического продления сертификата.

Задание запускается каждый день, продление сертификата выполняется через 60 дней. Планировщик запускает команду:

C:\inetpub\letsencrypt\wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org"

Эту же команду вы можете использовать для ручного обновления сертификата.

Перенаправление трафика IIS сайта с HTTP на HTTPS адрес

Чтобы перенаправить весь входящий HTTP трафик на HTTPS сайт, нужно установить модуль Microsoft URL Rewrite Module (https://www.iis.net/downloads/microsoft/url-rewrite), и убедиться, что в настройках сайта не включена опция обязательного использования 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>

Также вы можете настроить перенаправление трафика через URL Rewrite через графический интерфейс IIS Manager. Выберите Sites -> yoursitename -> URL Rewrite.

Создайте новое правило Add Rule -> Blank rule.

Укажите имя правила и измените значения параметров:

  • Requested URL -> Matches the Pattern
  • Using -> Regular Expressions
  • Pattern -> (.*)

В блоке Conditions измените Logical Grouping -> Match All и нажмите Add. Укажите

  • Condition input -> {HTTPS}
  • Check if input string -> Matches the Pattern
  • Pattern -> ^OFF$

Теперь в блоке Action выберите:

  • Action Type -> Redirect
  • Redirect URL -> https://{HTTP_HOST}/{R:1}
  • Redirect type -> Permanent (301)

Нажмите применить, у убедитесь, что правило добавилось.

Откройте браузер и попробуйте открыть ваш сайт по HTTP адресу, вас должно автоматически перенаправить на HTTPS URL.

Полезные ссылки:
https://winitpro.ru/index.php/2017/11/03/ustanovka-besplatnogo-ssl-sertifikata-lets-encrypt-na-iis-v-windows-server-2012-r2/

https://trueconf.ru/blog/baza-znaniy/sozdanie-sertifikata-lets-encrypt-na-windows.html