Установка бесплатного 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
netsh advfirewall firewall add rule name="HTTPS" protocol=TCP localport=443 action=allow dir=IN
netsh advfirewall firewall add rule name="HTTP+HTTPS" protocol=TCP localport=80,443 action=allow dir=IN
Устанавливаем SSL сертификат
Запускаем wacs.exe с правами Администратора и выполняем следующие шаги:
Вписываем наше доменное имя 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.
Укажите имя правила и измените значения параметров:
В блоке Conditions измените Logical Grouping -> Match All и нажмите Add. Укажите
Теперь в блоке Action выберите:
Нажмите применить, у убедитесь, что правило добавилось.
Откройте браузер и попробуйте открыть ваш сайт по 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