Блог

В этой статье мы подробно рассмотрим, как установить и привязать бесплатный TLS/SSL сертификат от Let’s Encrypt на веб-сервере IIS, который работает на операционных системах Windows Server 2019/2016/2012 R2. Мы также затронем вопросы использования Let’s Encrypt для служб удаленных рабочих столов (Remote Desktop Services). В статье будут описаны шаги по установке, настройки сертификатов и автоматизации их обновления. Скриншоты будут сопровождать текст для наглядности процесса.

Приобрести оригинальные ключи активации можно у нас в каталоге:

Windows Server 2019 — от 2640 ₽

Windows Server 2016 — от 2370 ₽

Windows Server 2012 R2 — от 1270 ₽

Let’s Encrypt и ACME клиенты для Windows
TLS/SSL сертификат защищает данные пользователей, передаваемые по сети, предотвращая атаки «человек посередине» (man-in-the-middle), и гарантирует целостность информации. Let’s Encrypt — некоммерческий центр сертификации, который выпускает бесплатные TLS сертификаты X.509 через API для шифрования HTTPS-соединений. Сертификаты выдают только для валидации доменов (domain validation), и их срок действия составляет 90 дней (с ограничением — 50 сертификатов на один домен в неделю). Однако сертификаты можно автоматически обновлять по расписанию.

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

Windows ACME Simple (WACS) — консольная утилита для выпуска сертификата и его привязки к сайту на IIS;

Powershell ACMESharp — библиотека для работы с ACME API через команды Powershell;

Certify — графический интерфейс для управления сертификатами через ACME API.

Клиент WACS для установки TLS сертификата Let’s Encrypt в IIS на Windows Server
Самый простой способ получить сертификат Let’s Encrypt — использовать утилиту Windows ACME Simple (WACS). Эта утилита — это пошаговый мастер, который позволяет выбрать сайт на IIS и автоматически выпустить для него SSL сертификат.

Шаги установки:

1. Предположим, у вас уже есть сайт на IIS под управлением Windows Server 2016. Ваша задача — переключить сайт на HTTPS, установив сертификат Let’s Encrypt.

2. Скачайте последнюю версию WACS с GitHub (например, win-acme.v2.0.10.444.zip).

3. Распакуйте архив в папку на сервере, например: c:\inetpub\letsencrypt.

4. Убедитесь, что на сервере установлен .NET Framework версии 4.7.2 или выше.

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

Запустится мастер генерации сертификатов. Чтобы быстро создать новый сертификат, выберите N: — Create new certificates (simple for IIS).

Выберите пункт 1. Single binding of an IIS site, если не требуется сертификат с псевдонимами (SAN). Если вам нужен Wildcard-сертификат, выберите опцию 3.

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

Укажите ваш email, на который будут отправляться уведомления о проблемах с обновлением сертификата сайта и другие о повешения (можно указать несколько email через запятую). Осталось согласится с условиями использования и Windows ACME Simple подключится к серверам Let’s Encrypt и попытается автоматически сгенерировать новый SSL сертификат для вашего сайта.

Процесс генерации и установки SSL сертификата Let’s Encrypt для IIS полностью автоматизирован.

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

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

Утилита WACS сохраняет закрытый ключ сертификата (*.pem), сам сертфикат и ряд других файлов в каталог C:\Users\%username%\AppData\Roaming\letsencrypt-win-simple. Затем она в фоновом режиме установит сгенерированный SSL сертификат Let’s Encrypt и привяжет его к вашему сайту IIS. Если на сайте уже установлен SSL сертификат (например, самоподписанный), он будет заменен новым.

В IIS Manager откройте меню Site Binding для вашего сайта и убедитесь, что для него используется сертификат, выданный Let’s Encrypt Authority X3.

В хранилище сертификатов компьютера сертификат Let’s Encrypt для IIS вы можете найти в разделе Web Hosting -> Certificates.

Автоматизация обновления сертификатов и настройка редиректа
После установки сертификата, в планировщике заданий Windows появится задание для автоматического продления сертификата через 60 дней. Команда для обновления сертификата вручную выглядит так:

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

Чтобы настроить перенаправление HTTP трафика на HTTPS, установите модуль Microsoft URL Rewrite Module. Далее в файле web.config добавьте следующий код:

Скачать отдельно данный код.

Также вы можете настроить перенаправление трафика через 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.

Использование сертификатов Let’s Encrypt для Remote Desktop Services

Для настройки SSL сертификатов Let’s Encrypt в службах Remote Desktop Services (RDS), следуйте аналогичным шагам, что и для IIS. С помощью WACS можно выпустить сертификат и привязать его к RDS Gateway. Для автоматизации процесса привязки сертификата используйте PowerShell скрипт ImportRDGateway.ps1 (Главный недостаток скрипта – приходится вручную указывать отпечаток нового сертификата), или его модифицированную версию ImportRDGateway_Cert_From_IIS.ps1, которая автоматически обновляет сертификат после его перевыпуска.

Для автоматической привязки сертификата скачайте скрипт ImportRDGateway_Cert_From_IIS.ps1 и запустите его:

powershell -File ImportRDGateway_Cert_From_IIS.ps1

Если у вас RDS Gateway живет на стандартном IIS сайте «Default Web Site» с индексом 0, можете использовать скрипт без изменений.

Чтобы получить ID сайта в IIS, откройте консоль PowerShell и выполните:

Import-Module WebAdministration

Get-ChildItem IIS:Sites

Получите список вида:

В колонке ID указан индекс вашего сайта, отнимите от него единицу. Полученный индекс вашего сайта нужно указать вместо 0 в 27 строке скрипта PowerShell:

$NewCertThumbprint = (Get-ChildItem IIS:SSLBindings)[0].Thumbprint

Теперь откройте задание планировщика win-acme-renew (acme-v02.api.letsencrypt.org) и на вкладке Action добавьте новое задание, которое запускает скрипт ImportRDGateway_Cert_From_IIS.ps1 после обновления сертификата.

Чтобы не менять разрешения на выполнение скриптов PowerShell, вы можете вызывать скрипт командой:

PowerShell.exe -ExecutionPolicy Bypass -File c:\inetpub\letsencrypt\ImportRDGateway_Cert_From_IIS.ps1

Теперь скрипт привязки SSL сертификата к службам RDS будет выполнятся сразу после продления сертификата Let’s Encrypt. При этом автоматически перезапускается служба RD Gateway командой:

Restart-Service TSGateway

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

Также вы можете использовать бесплатные сертификаты Let’s Encrypt в Linux для веб сайтов на Nginx или apache. Cертификаты Let’s Encrypt в настоящий момент широко используются на сайтах многих крупных компаний и им доверяют все браузеры. Теперь ваш сайт или служба RDS защищены актуальным сертификатом от Let’s Encrypt.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии