В этом обзоре мы расскажем об особенностях установки и привязки бесплатного TLS/SSL сертификата от Let’s Encrypt на хосте под управлением Windows. Будут описана процедура выпуска, продления сертификата для веб-сайта IIS, а также установка сертификата Let’s Encrypt для защиты подключений к службам RDS.
Содержание:
- Получение и установка сертификат Let’s Encrypt в IIS на Windows
- Продление (перевыпуск) сертификата Let’s Encrypt в Windows
- Перенаправление трафика IIS сайта с HTTP на HTTPS адрес
- Использование сертификата Let’s Encrypt для Remote Desktop Services
Некоммерческий центр сертификации Let’s Encrypt позволяет в автоматическом режиме через API выпускать бесплатные доверенные криптографические сертификаты X.509 для TLS-шифрования (HTTPS). Выдаются только сертификаты для валидации доменов (domain validation), со сроком действия 90 дней с возможность перевыпускать сертификат по расписанию.
API интерфейс, позволяющий автоматически выпускать сертификаты называется Automated Certificate Management Environment (ACME) API. Для Windows систем самой популярной реализации клиента ACME API является утилита Windows ACME Simple (WACS).
Получение и установка сертификат Let’s Encrypt в IIS на Windows
Для автоматизации получения SSL сертификата Let’s Encrypt в Windows можно использовать консольную утилиту Windows ACME Simple (WACS) (ранее проект назывался LetsEncrypt-Win-Simple). WACS представляет собой простой графический мастер, который позволяет выбрать сайт IIS и автоматически выпустить и привязать к нему SSL сертификат Let’s Encrypt.
Итак, у меня есть хост с Windows Server 2022, на котором развернут веб-сервер IIS и простой веб-сайт. Наша задача переключить сайт на HTTPS протокол, установив SSL сертификат от Let’s Encrypt.
Скачайте последнюю версию клиента WACS с GitHub (https://github.com/PKISharp/win-acme/releases) для вашей платформы. В нашем случае это win-acme.v2.2.9.1701.x64.pluggable.zip. Распакуйте архив в папку на диске.
Запустите утилиту
wacs.exe
с правами администратора.
Запустится интерактивный мастер генерации сертификата Let’s Encrypt и привязки его к сайту IIS. Чтобы быстро создать новый сертификат выберите
N: — Create certificate (default settings)
.
Утилита может выдать, что вебсайты не обнаружены:
No websites with host bindings have been configured in IIS. Add one in the IIS Manager or choose the plugin 'Manual input' instead. Source plugin IIS was unable to generate options
В этом случае, запустите консоль управления IIS (
inetmgr
), откройте меню Site Bindings вашего сайта и проверьте, что для сайта задано имя узла (Host Name). Подробнее об этом параметре в статье Как запустить несколько сайтов в IIS на одном порту и IP?
Выберите номер сайта, для которого нужно выпустить сертификат.
Затем нажмите
A
, чтобы выбрать все привязки сайта и
y
чтобы продолжить.
Примите условия пользовательского соглашения, нажав
y
.
Укажите email, на который будут отправляться уведомления о проблемах с обновлением сертификата сайта и другие о оповещения (можно указать несколько email через запятую).
На этом этапе веб сервисы Let’s encrypt должны проверить, что вы являетесь владельцем домена, для которого выпускается. По умолчанию используется HTTP валидация (http-01 validation, SelfHosting). Для этого на вашем хосте запускается небольшой Http Challenge Server (если этот порт занят, используется IIS), на порт 80 которого выполняется подключение (входящий HTTP 80 порт должен быть открыт в файерволе). В папку веб-сервера будет записан файл ответа
\.well-known\acme-challenge\<random_filename>
.
Если по тем или иным причинам вы не можете выполнить ACME HTTP-01 валидацию, можно использовать DNS-01 валидацию. Для этого в DNS зоне вашего домена нужно создать специальную TXT запись. Эта опция доступна, если выбрать в первом меню клиента wacs пункт M: Create certificate (full options). ACME клиент при валидации домена проверяет наличие этой записи в DNS.
Процесс генерации и установки SSL сертификата Let’s Encrypt для IIS полностью автоматизирован.
- Закрытый ключ сертификата (*.pem) и сам сертификат (*.pfx) сохраняются в каталог
C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates
- Подробные логи всех операций WACS по запросу, получению и установке сертификата в каталоге
C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Log
Если валидация выполнена успешно, утилита получит от CA сертификат, установит его в хранилище сертификатов и назначит в качестве SSL сертификата целевого сайта IIS. Если на сайте уже установлен SSL сертификат (например, самоподписанный), он будет заменен новым.
В IIS Manager откройте меню Site Binding для вашего сайта и убедитесь, что для него используется сертификат, выданный R10, Let’s Encrypt Authority.
Сертификат Let’s Encrypt для IIS установлен в раздел Web Hosting -> Certificates хранилища сертификатов компьютера (
certlm.msc
).
Можно автоматизировать выпуск сертификата с помощью аргументов утилиты wacs.exe. Например, выпустить сертификат Let’s Encrypt со стандартными настройками для сайта можно так:
wacs.exe --target manual --host 12345.winitpro.ru --store certificatestore --validation selfhosting --siteid "TestWebSite"
Продление (перевыпуск) сертификата Let’s Encrypt в Windows
Так как сертификаты Let’s Encrypt выпускаются всего на 90 дней, их нужно периодически обновлять. При генерации нового сертификата, утилита WACS сразу создает в планировщике задач Windows задание для автоматического продления (а фактически перевыпуска) сертификата.
Откройте консоль Task Scheduler (taskschd.msc). Как вы видите, в нем появилось задание win-acme renew (acme-v02.api.letsencrypt.org), которое запускает раз в день команду проверки срока действия и обновления установленных сертификатов:
wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/"
Продлить (обновить) сертификат можно спустя 60 дней после его выпуска.
Перенаправление трафика IIS сайта с HTTP на HTTPS адрес
Так как для вашего сайта теперь установлен SSL сертификат, вы можете отказаться от использования незащищенного протокола HTTP и полностью перейти на HTSSP. Все HTTP запросы к сайту можно автоматически перенаправлять на HTTPS адрес с помощью IIS модуля Microsoft URL Rewrite Module.
Подробно это описано в статье Настройка редиректа HTTP на HTTPS в IIS на Windows Server.
Использование сертификата Let’s Encrypt для Remote Desktop Services
Если для подключения внешних пользователей в корпоративную сеть вы используете шлюз Remote Desktop Gateway или RD Web Access, можете установить доверенный сертификат Let’s Encrypt вместо обычного самоподписанного сертификата. Рассмотрим, как корректно установить сертификат Let’s Encrypt для защиты служб Remote Desktop Services.
Если на Remote Desktop Gateway сервере поднята также роль RDSH, нужно запретить пользователям Read доступ к каталогу, в котором у вас хранится WACS (в моем примере это c:\ps\wacs) и к каталогу с сертификатами сертификат Let’s Encrypt (C:\ProgramData\win-acme).
С помощью wacs.exe на сервере RDGW выпустите Let’s Encrypt сертификат для Default Web Site в IIS как описано выше. Можно вручную привязать это сертификат к нужным служба RDS. Но вам придется выполнять эти действия вручную каждые 60 дней при перевыпуске сертификата Let’s Encrypt.
В проекте ACME есть готовый PowerShell скрипт для автоматического импорта Let’s Encrypt в RD Gateway (…\Scripts\ImportRDGateway.ps1). Недостаток этого скрипта – приходится вручную указывать отпечаток нового сертификата:
ImportRDGateway.ps1 <certThumbprint>
Для автоматического получения отпечатка сертификата с указанного сайта IIS используйте доработанный скрипт ImportRDGateway_Cert_From_IIS.ps1 (основан на стандартном ImportRDGateway.ps1).
Инструкция и модифицированный PowerShell скрипт присланы нашим читателем Антоном, за что посылаем ему лучи благодарности!
Вы можете запустить это скрипт вручную:
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 добавьте новое задание, которое запускает PowerShell скрипт ImportRDGateway_Cert_From_IIS.ps1 после обновления сертификата.
Чтобы не менять разрешения на выполнение скриптов PowerShell, вы можете вызывать скрипт командой:
PowerShell.exe -ExecutionPolicy Bypass -File c:\ps\acme\scripts\ImportRDGateway_Cert_From_IIS.ps1
Теперь скрипт привязки SSL сертификата к службам RDS будет выполнятся сразу после продления сертификата Let’s Encrypt. При этом автоматически перезапускается служба RD Gateway командой:
Restart-Service TSGateway
При перезапуске службы TSGateway все текущие сессии пользователей разрываются, поэтому желательно изменить периодичность запуска задания обновления сертификата на 1 раз в 60 дней.
Windows ACME Simple — утилита, с которой установка SSL-сертификата на сайт пройдёт легко и просто. Рассказываем, как получить бесплатный SSL-сертификат Let’s Encrypt и подключить его к сайту на IIS-сервере с помощью WACS.
Знак закрытого замка́ в адресной строке сайта означает, что соединение между компьютером пользователя и сервером с сайтом защищено шифрованием. На наличие «правильного» знака замка́ обращают внимание, пожалуй, почти все посетители — хотя бы потому, что современные браузеры не любят незащищённые соединения: многие из них отказываются переходить по ссылкам, которые начинаются с http:// и выводят сообщение о потенциальной опасности. Чтобы обмен данными шёл по защищённому протоколу HTTPS, на сайт устанавливают специальные SSL-сертификаты, которые гарантируют, что передаваемые данные зашифрованы, а злоумышленники, даже перехватив их, не смогут их прочитать.
В статье рассказываем, как установить сертификат Let’s Encrypt на веб-сайт, расположенный на IIS-сервере с установленной ОС Windows Server 2016/2012 R2.
Чтобы выдать сертификат Let’s Encrypt, удостоверяющая организация должна убедиться, что вы владеете доменом, для чего она отправит запрос, который должен быть правильно обработан. На системах под управлением Linux для этого нужна сложная настройка сервера, но на Windows всё довольно просто: пользователю не нужно ничего настраивать, специальная утилита сделает это в автоматическом режиме.
Подготовка к установке
Перед установкой нужно остановить все службы TrueConf Server. Также убедитесь, что порты 80 и 443 открыты и свободны. Если понадобится, нужно остановить процессы, которые могут их занимать (например, Apache HTTP Server).
Настройка Windows
IIS должен отвечать на запросы, адресованные по доменному имени, на которое будет выпущен сертификат. Поэтому нужно связать домен с сайтом, размещённым на веб-сервере.
- Зайдите в панель управления IIS и выберите нужный сайт из списка:
- В области справа выберите «Привязки…»:
- Затем измените привязку существующей записи или добавьте новую:
- Сохраните изменения и выйдите из панели управления IIS.
Устанавливаем Windows ACME Simple
Подготовка
Устанавливать Let’s Encrypt мы будем с помощью программы Windows ACME Simple (WACS). WACS отвечает за выпуск сертификата и привязывает его к веб-ресурсу с минимальным участием пользователя.
- Скачать программу можно из репозитория GitHub.
- Выберите версию в соответствии с разрядностью вашей ОС.
- Извлеките содержимое архива в любую директорию.
Установка Windows ACME и получение сертификата
- Запустите командную строку из-под пользователя с рут, зайдите в распакованную папку и запустите wacs.exe. По умолчанию программа запросит выпуск сертификата в der-формате, но если вы хотите получить его формате .pem, то используйте дополнительные команды, введите в командной строке:
wacs.exe --store pemfiles --путь_к_целевому_каталогу C:\Certificates
Где путь_к_целевому_каталогу — это путь к папке, куда утилита загрузит полученный pem-файл.
- Откроется окно, где WACS предложит выбрать действие. В разных версиях утилиты описания действий могут отличаться, но в целом понятно, что нужно выбирать, в любом варианте:
Чтобы создать новый сертификат Let’s Encrypt, вводите символ N.
- Затем выберите среди перечисленных сайт, который привязан к нужному доменному имени и отвечает на связанные с ним запросы. На этом этапе доступен мультивыбор: номера вводятся через запятую. В примере сайт только один, поэтому мы вводим «1». Нажмите «Ввод».
- Далее выберем привязки. Если у сайта их несколько, то вводим «3»:
Внимательно читайте сообщения утилиты, в некоторых её версиях на этом этапе для выбора всех привязок нужно ввести А.
- Укажите электронный почтовый адрес для получения оповещений, прочтите «Соглашение пользователя», затем подтвердите корректность введённых данных.
- WACS сама настроит сервер, инициирует проверку и выдачу сертификата. Также программа добавит в «Планировщик Windows» повторяющуюся задачу на его перевыпуск.
- Для завершения введите Q.
Ещё один способ выпустить сертификат — приобрести платный или бесплатный SSL-сертификат у AdminVPS на странице продукта.
Проверьте, что сертификат установлен правильно
- После подключения Let’s Encrypt ресурс будет доступен по защищённому соединению HyperText Transfer Protocol Secure. Для проверки перейдите на ваш ресурс: введите в адресной строке имя сайта, начиная с https://.
- Кроме того, удостовериться, что сертификат установлен, можно в панели управления IIS в модуле «Привязки сайта». Зайдите в него, кликните по https-сайту (с указанным портом 443), затем по «Изменить». Выберите «Просмотреть» напротив поля с названием SSL-сертификата.
- Также проверьте, создано ли задание на обновление в «Планировщике задач» (Task Scheduler). Это задание нужно, чтобы перевыпуск сертификата проходил автоматически. По умолчанию оно назначается на 9:00 ежедневно и будет запускать процесс апдейта командой, которая имеет вид:
C:\директория\wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/"
Если вы собираетесь обновлять сертификат вручную, то укажите актуальный путь к wacs.exe.
Переводим веб-ресурс с HTTP на HTTPS
Сертификат установлен и сайт открывается по HTTPS через 443-й порт, теперь нужно запретить соединение по HTTP и направить поток данных по защищённому HTTPS. В этом нам поможет утилита URL Rewrite. Скачайте модуль с официального сайта разработчиков IIS.
Когда установка завершится, в панели управления веб-сервером вы увидите раздел URL Rewrite, в котором можно создать правило, перенаправляющее трафик.
Зайдите в него, пройдите по пути Actions → Add Rule(s) → Blank rule:
- в поле Name задайте название правила.
- в поле Requested URL установите Matches the Pattern из выпадающего списка.
- в поле Pattern установите шаблон «.*».
Раскройте блок Conditions и в поле Logical Grouping установите значение Match All и кликните по Add («Добавить»).
Затем в открывшемся окне Add Condition:
- в поле Condition input вставьте значение {HTTPS},
- в поле Check if input string — Matches the Pattern,
- значение в поле Pattern — ^OFF$.
Для сохранения настроек нажмите ОК.
Разверните блок Action:
- в поле Action type выберите Redirect,
- в блоке Action properties в поле Redirect URL укажите https://{HTTP_HOST}/{R:1},
- в Redirect type — значение Permanent (301).
Затем нажмите Apply в верхней части панели управления IIS для сохранения настроек.
Для проверки перейдите на сайт, указав в его адресе http://. Если настройки применились корректно, вы будете перенаправлены на HTTPS-версию сайта.
Теперь вы знаете, как установить бесплатный SSL-сертификат Let’s Encrypt на IIS с Windows Server.
Читайте в блоге:
- Как выпустить SSL-сертификат для сайта
- Как включить протокол SSL на сайте
- Как посмотреть SSL-сертификат на сайте и проверить его подлинность
В данной статье мы посмотрим, как можно установить бесплатный сертификат Let’s Encrypt на web-сайт, работающий на Internet Information Servises (IIS). Наш справочник уже содержит мануалы по установке такого сертификата на Ubuntu и на CentOs, поэтому отложим теорию и приступим.
В качестве примера для установки сертификата мы будем использовать VPS, работающий на Windows Server 2019. На нашем сервере мы развернули web-сервер из набора серверов IIS, на котором запустили сайт my-domain.host
. Доступ к сайту осуществляется по протоколу http
.
Задача – получить сертификат из Центра Сертификации Let’s Encrypt, установить его на наш web-сервер и привязать к нашему домену. Также, мы перенаправим трафик HTTP на протокол HTTPS. Другими словами, при попытке подключится к сайту по протоколу HTTP, система будет включать протокол HTTPS.
Получение сертификата
Наиболее простым способом установки SSL-сертификата от Let’s Encrypt является применение консольной утилиты WACS (Windows ACME Simple). WACS позволяет осуществить автоматический выпуск и привязку SSL-сертификата к сайтам, работающим на IIS. На момент написания данной статьи актуальной версией утилиты являлась версия v2.1.22.1289. Загрузка клиента WACS доступна со страницы проекта на GitHub – https://github.com/win-acme/win-acme/releases.
После загрузки архива распакуйте его содержимое в каталог C:\inetpub\letsencrypt\
на вашем виртуальном сервере. Далее, запустите на исполнение файл wacs.exe
. В открывшемся меню нужно выбрать опцию создания сертификата с установками по умолчанию. Для того, чтобы это сделать, введите символ N
.
На следующем шаге утилита предложит выбрать сайт, для которого будет выпускаться сертификат. Поскольку в нашем случае в IIS находится всего один сайт, то мы можем нажать Enter. Если в списке будут находиться несколько сайтов, вы можете выбрать один или несколько из них, перечислив их номера через запятую. После чего нажмите символ A
, чтобы выбрать все привязки, и символ y
, чтобы подтвердить свой выбор.
Далее, утилита предложит открыть для прочтения Пользовательское соглашение, после чего попросит вас подтвердить своё согласие с ним. Необходимо будет ещё раз нажать y
.
После этого нужно будет ввести адрес электронной почты для связи с вами по возможным проблемам с SSL-сертификатом. Далее, утилита запустит процесс выпуска сертификата и привязки его к указанным вами доменам. В заключении нажмите Q
для завершения работы WACS.
После этого ваш домен должен уже быть доступен при подключении к нему с использованием протокола HTTPS. Проверьте это, набрав в браузере имя вашего сайта с префиксом https://
.
Настройка протокола HTTPS
В менеджере IIS установленный сертификат можно просмотреть через меню Bindings...
Для этого следует выбрать требуемый сайт с типом https
, нажать Edit
и в строке SSL certificate
нажать View...
Плюс ко всему, утилита WACS создаёт задание в Планировщике заданий (Task Scheduler), предназначенное для продления срока действия установленного сертификата в автоматическом режиме. Задание будет ежедневно запускать на исполнение следующую команду:
C:\inetpub\letsencrypt\wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/"
Поскольку наш сайт теперь доступен по 443-му порту (протокол HTTPS), есть смысл отказаться от использования доступа по протоколу HTTP. Для этого необходимо перенаправить трафик HTTP на наш HTTPS-сайт. Чтобы это сделать, потребуется произвести на сервере установку модуля Microsoft URL Rewrite Module. Данный софт доступен для загрузки по ссылке – https://www.iis.net/downloads/microsoft/url-rewrite.
После установки утилиты в профиле сайта на IIS появится кнопка URL Rewrite
.
Используя её нужно будет создать новое правило для перенаправления трафика: Actions
🠒 Add Rule(s)....
🠒 Blank rule
. В строке Name
укажите имя для нового правила (в нашем примере это – HTTP Redirect Rule
). В строке Requested URL
следует выбрать Matches the Pattern
, в строке Pattern
наберите (.*)
. Также, в блоке настроек Conditions
в строке Logical Grouping
выберите Match All
и нажмите Add
. В окне Add Condition
в строке Condition input
укажите {HTTPS}
, в строке Check if input string
выберите Matches the Pattern
, в строке Pattern
наберите ^OFF$
. После чего нажмите ОК
.
Также, в блоке настроек Action
укажите Redirect
в строке Action type
, в строке Redirect URL
наберите https://{HTTP_HOST}/{R:1}
и в строке Redirect type
выберите Permanent (301)
. Завершив настройки, примените внесённые изменения при помощи Apply
в правом верхнем углу окна Internet Information Servises (IIS) Manager.
Теперь, перейдя в браузере по адресу вашего сайта с использованием протокола HTTP, веб-сервер должен будет перенаправить вас на адрес вашего сайта, но уже с префиксом https://
.
Вместо заключения
В заключение всё-таки несколько слов о теории.
SSL-сертификаты делятся на три основных типа:
- сертификаты, выпускаемые через проверку прав на домен – Domain Validated (DV);
- сертификаты, подтверждающие домен и его принадлежность конкретному юридическому лицу – Organization Validation (OV);
- и, наконец, сертификаты с расширенной проверкой – Extended Validation (EV).
Сертификат от Let’s Encrypt, получение которого мы описали в данном руководстве, относится к первой категории.
Также, сертификаты могут быть платными и бесплатными. Рассмотренный в нашей статье SSL-сертификат от Let’s Encrypt является бесплатным. Но является ли это его неоспоримым преимуществом?
С одной стороны, да. Бесплатный сертификат обходится потребителю заведомо дешевле, чем платный. Но, с другой стороны, бесплатные сертификаты всё же имеют некоторые минусы. Во-первых, бесплатные сертификаты имеют сравнительно короткий срок действия. По истечении его сертификату требуется перевыпуск. Происходит это постоянно через определённые промежутки времени. Во-вторых, Удостоверяющие Центры, выпускающие платные SSL-сертификаты, проверяют владельцев доменов. Тем самым они формируют более высокое доверие к сайту со стороны поисковых систем и пользователей. В третьих, преимуществом платных сертификатов является наличие финансовых обязательств Центра Сертификации перед доменом. Другими словами, при утечке с ресурса пользовательских данных пострадавший сайт получит компенсацию. Конечно, при условии, что на сайте использовался платный сертификат.
Если вам необходимо установить сертификат на Windows Server, давайте разберёмся, как это сделать. Если вы ещё не получили сертификат, то можете ознакомиться с инструкцией «Как сгенерировать запрос на SSL-сертификат в Windows Server».
Если файлы сертификата у вас на руках, приступаем к установке.
Добавляем сертификат на сервер
Для того чтобы загрузить сертификат, перейдите в Диспетчер серверов (Пуск
— Администрирование
— Диспетчер серверов
).
Затем откройте Диспетчер служб IIS
(Средства
— Диспетчер служб IIS
) и кликните на Сертификаты сервера
.
Далее способ установки зависит от того, где вы генерировали CSR:
1) Если Вы генерировали CSR на том же сервере, куда устанавливаете сертификат.
В меню Действия
кликните пункт Запрос установки сертификатов
.
Добавьте .crt файл, в поле имя — укажите домен сайта и нажмите ОК
.
2) Если Вы генерировали CSR через личный кабинет/самостоятельно, то предварительно экспортируйте сертификат с ключом в .pfx файл.
Чтобы добавить сгенерированный .pfx файл на сервер, в меню Действия
нажимаем на кнопку Импортировать
.
В открывшемся окне укажите расположение файла и пароль. Пароль задается при генерировании файла .pfx.
Сертификат загружен. В обоих вариантах, после добавления файла, сертификат будет доступен в разделе Сертификаты сервера
. Осталось настроить доменное имя.
Подключаем SSL-сертификат на домен
Переходим в настройки сайта. В меню Подключения
выберите сайт и кликните на пункт Привязки
.
В открывшемся окне нажимаем Добавить
и заполняем информацию:
Тип — https
Порт — 443
Имя узла — доменное имя.
IP address — IP-адрес сайта (для сертификата следует выделять отдельный IP для каждого сайта)
В поле SSL-сертификаты
указываем созданный сертификат.
Перезагружаем сайт/сервер.
Проверяем — если сертификат установлен, то сайт будет доступен по https://.
Этот материал был полезен?
В этой статье мы подробно рассмотрим, как установить и привязать бесплатный TLS/SSL сертификат от Let’s Encrypt на веб-сервере IIS, который работает на операционных системах Windows Server 2019/2016/2012 R2. Мы также затронем вопросы использования Let’s Encrypt для служб удаленных рабочих столов (Remote Desktop Services). В статье будут описаны шаги по установке, настройки сертификатов и автоматизации их обновления. Скриншоты будут сопровождать текст для наглядности процесса.
Приобрести оригинальные ключи активации можно у нас в каталоге:
Windows Server 2019 — от 2740 ₽
Windows Server 2016 — от 2470 ₽
Windows Server 2012 R2 — от 1370 ₽
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.