- Быстро и просто получаем Let’s Encrypt SSL сертификат в Windows
- Установка бесплатного TLS/SSL сертификата Let’s Encrypt в IIS/RDS в Windows Server 2016/2012 R2
- Let’s Encrypt и ACME клиенты для Windows
- Клиент WACS для установки TLS сертификата Let’s Encrypt в IIS на Windows Server
- Перенаправление трафика IIS сайта с HTTP на HTTPS адрес
- Использование сертификата Let’s Encrypt для Remote Desktop Services
- Создание сертификата «Let’s Encrypt» на Windows
- Шаг 1: Подготовка
- Шаг 2: Создание сертификата
Быстро и просто получаем Let’s Encrypt SSL сертификат в Windows
Много лет я пользовался ОС Linux в качестве основной системы (где-то с начала 2000-х), но последнее время я всё больше занимаюсь дизайном и всё меньше чем-то другим. Можно сказать, что нужда выгнала меня из этого уютного и привычного гнёздышка. На Мак я пока решиться не могу, поэтому да, нынче я заново осваиваюсь в Windows и местами это даётся не легко 🙂 То, что делается в Линуксе на раз-два, здесь вызывает непредвиденные трудности и вопросы. При этом каждый раз скакать с системы на систему очень не удобно, хотя обе они спокойно себе соседствуют. Так и здесь, появилась необходимость быстренько сделать бесплатный SSL сертификат Let’s Encrypt для одного сайтика. Не так давно я описывал процесс создания сертификата с помощью утилиты Certbot и установку его на популярные хостинги REG.RU и SpaceWeb. Теперь я расскажу о том, как быстро выпустить сертификат Let’s Encrypt из-под Windows.
Если быть точнее, то этот способ универсален и для него не важно, какой системой вы пользуетесь. Дело в том, что выпускать сертификат мы будем в браузере. Для этого мы воспользуемся сервисом SSL For Free.
На первом экране необходимо указать ваш домен и нажать на кнопку Create Free SSL Certificate.
Далее необходимо выбрать способ загрузки подтверждающих файлов на ваш хостинг. Есть вариант автоматической загрузки по FTP, но я всё же предпочитаю сделать это руками, поэтому выбираем Manual Verification.
Далее необходимо скачать подтверждающие файлы (или файл). В данном случае файла два для домена без и с www.
В корне вашего сайта создаём каталог .well-known, внути него ещё один каталог acme-challenge и кладём в него скачанные файлы (или файл). Проверяем правильность переходом по ссылкам (п. 5). Если всё хорошо, то жмём Download SSL Certificate и получаем архив с файлами, которые используем для установки на свой хостинг.
Установка бесплатного TLS/SSL сертификата Let’s Encrypt в IIS/RDS в Windows Server 2016/2012 R2
В этом обзоре мы расскажем об особенностях установки и привязки бесплатного TLS/SSL сертификата от Let’s Encrypt для сайта на веб сервере IIS, запущенного на Windows Server 2019/2016/2012 R2.
Let’s Encrypt и ACME клиенты для Windows
Наличие TLS/SSL сертификата у сайта позволяет защитить данные пользователей, передаваемые по сети от атак человек-посередине (man-in-the-middle) и гарантировать целостность переданных данных. Некоммерческий центр сертификации Let’s Encrypt позволяет в автоматическом режиме через API выпускать бесплатные криптографические TLS сертификаты X.509 для шифрования (HTTPS) . Выдаются только сертификаты для валидации доменов (domain validation), со сроком действия 90 дней (есть ограничение – 50 сертификатов для одного домена в неделю). Но вы можете автоматически перевыпускать SSL сертификат для своего сайта по расписанию.
API интерфейс, позволяющий автоматически выпускать сертификаты называется Automated Certificate Management Environment (ACME) API. Для Windows систем на данный момент имеется 3 самых популярных реализации клиента ACME API:
- Утилита WindowsACMESimple(WACS) – утилита командной строки для интерактивного выпуска сертификата и привязки его к определенному сайту на вашем веб сервере IIS;
- Модуль PowershellACMESharp – библиотека Powershell с множеством команд для взаимодействия через ACME API с серверами Let’s Encrypt;
- Certify – графический менеджер SSL сертификатов для Windows, позволяет интерактивно управления сертификатами через ACME API.
Клиент WACS для установки TLS сертификата Let’s Encrypt в IIS на Windows Server
Самый простой способ получить SSL сертификат от Let’s Encrypt — воспользоваться консольной утилитой Windows ACME Simple (WACS) (ранее проект назывался LetsEncrypt-Win-Simple). Она представляет собой простой мастер, который позволяет выбрать один из сайтов, запущенных на IIS, и автоматически выпустить и привязать к нему SSL сертификат.
Итак, предположим у нас имеется веб сайт на IIS, развёрнутый под управлением Windows Server 2016. Наша задача, переключить его в HTTPS режим, установив SSL сертификат от Let’s Encrypt.
Скачайте последний релиз клиента WACS со страницы проекта на GitHub https://github.com/PKISharp/win-acme/releases (в моем случае это версия v2.0.10 – файл win-acme.v2.0.10.444.zip).
Распакуйте архив в каталог на сервере с IIS: c:\inetpub\letsencrypt
Откройте командную строку с правами администратора, перейдите в каталог c:\inetpub\ letsencrypt и запустите wacs.exe.
Запустится интерактивный мастер генерации сертификата Let’s Encrypt и привязки его к сайту IIS. Чтобы быстро создать новый сертификат выберите N: — Create new certificates (simple for IIS).
Затем нужно выбрать тип сертификата. В нашем примере нет необходимости использовать сертификат с псевдонимами (несколькими SAN — Subject Alternative Name), поэтому достаточно выбрать пункт 1. Single binding of an IIS site. Если вам нужен 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 смогут провести валидацию.
Утилита 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 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:
Также вы можете настроить перенаправление трафика через 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 ->
- Check if input string -> Matches the Pattern
- Pattern -> ^OFF$
Теперь в блоке Action выберите:
- Action Type -> Redirect
- Redirect URL -> https://
/ - Redirect type -> Permanent (301)
Откройте браузер и попробуйте открыть ваш сайт по HTTP адресу, вас должно автоматически перенаправить на HTTPS URL.
Использование сертификата Let’s Encrypt для Remote Desktop Services
Если вы используете для подключения внешних пользователей в корпоративную сеть шлюз Remote Desktop Gateway/ RD Web Access, вы можете использовать нормальный SSL сертификат Let’s Encrypt вместо обычного самоподписанного сертификата. Рассмотрим, как корректно установить сертификат Let’s Encrypt для зажиты служб Remote Desktop Services в Windows Server.
Затем на сервере RDP GW, запускаете wacs.exe, как описано выше, и вы выбираете нужный сайт IIS (обычно, Default Web Site). Let’s Encrypt выдает вам новый сертификат, который устанавливается для веб-сайта и в планировщике появляется задание на автоматические обновление сертификата.
Вы можете вручную экспортировать данный сертификат и привязать его к нужным службам RDS через SSL binding. Но вам придется выполнять эти действия вручную каждые 60 дней при перевыпуске сертификата Let’s Encrypt.
Нам нужен скрипт, который бы сразу после получения (продления) сертификата Let’s Encrypt применял бы его для RD Gateway.
В проекте win-acme есть готовый PowerShell скрипт ImportRDGateway.ps1 (https://github.com/PKISharp/win-acme/tree/master/dist/Scripts), который позволяет установить выбранный SSL сертификат для служб Remote Desktop. Главный недостаток скрипта – приходится вручную указывать отпечаток нового сертификата:
ImportRDGateway.ps1
Для автоматического получения отпечатка сертификата с указанного сайта IIS используйте доработанный скрипт ImportRDGateway_Cert_From_IIS.ps1 (основан на стандартном ImportRDGateway.ps1).
Вы можете запустить это скрипт вручную:
powershell -File ImportRDGateway_Cert_From_IIS.ps1
Если у вас RDS Gateway живет на стандартном IIS сайте «Default Web Site» с индексом 0, можете использовать скрипт без изменений.
Import-Module WebAdministration
Get-ChildItem IIS:Sites
Получите список вида:
В колонке ID указан индекс вашего сайта, отнимите от него единицу. Полученный индекс вашего сайта нужно указать вместо 0 в 27 строке скрипта PowerShell:
Теперь откройте задание планировщика 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 командой:
При перезапуске службы TSGateway все текущие сессии пользователей разрываются, поэтому желательно изменить периодичность запуска задания обновления сертфиката на 1 раз в 60 дней.
Отметим, что сертификаты Let’s Encrypt в настоящий момент широко используются на сайтах многих крупных компаний и им доверяют все браузеры. Надеюсь, что судьба бесплатного центра сертификации Let’s Encrypt не постигнет участь WoSign и StartCom.
Создание сертификата «Let’s Encrypt» на Windows
Криптографические сертификаты служат цифровым аналогом удостоверения сайта, что позволяет шифровать подключения с использованием протокола TLS и тем самым обеспечивать безопасное соединение между сервером и клиентом.
Существуют как платные, так и бесплатные центры сертификации. Одним из бесплатных центров является Let’s Encrypt, который выдаёт сертификаты сроком на 90 дней с возможностью продления в автоматическом режиме.
Шаг 1: Подготовка
Для создания TLS сертификата на Windows скачайте программу ACME Simple (WACS). Далее следуйте инструкции:
- Распакуйте скачанный архив в папку C:\wacs\ .
- В этой же папке создайте каталог crt.
- В брандмауэре Windows откройте Дополнительные параметры → Правила для входящих подключений → Создать правило → Для порта, в поле Определённые локальные порты впишите через запятую порты 80 и 443 и нажмите Далее. Затем выберите пункт Разрешить подключение, снова нажмите Далее, укажите для каких профилей будет применяться правило (по умолчанию для всех) и после нажатия кнопки Далее сохраните правило под любым именем.
Шаг 2: Создание сертификата
Откройте командную строку (cmd) от имени администратора и поочерёдно введите следующие команды:
- Выполните C:\wacs\wacs.exe .
- Далее выберите:
- Create new certificate (full options) (введите m );
- Manual input (введите 1 ).
- Укажите ваше доменное имя и два раза нажмите Enter для подтверждения.
- Затем последовательно выберите:
- [http-01] Serve verification files from memory (введите 2 );
- RSA key (введите 2 );
- PEM encoded files (Apache, nginx, etc.) (введите 2 ).
- Укажите папку для сохранения сертификатов C:\wacs\crt .
- После этого выберите:
- No (additional) store steps (введите 3 );
- No (additional) installation steps (введите 4 ).
- Укажите адрес электронной почты для уведомлений об ошибках.
- На дополнительные вопросы отвечайте следующим образом:
- на вопрос Open in default application? введите no ;
- на вопрос Do you agree with terms? введите yes .
После этого при удачном создании сертификата вы увидите надпись Authorization result: valid . На вопрос Do you want to specify the user the task will run as? введите no .
В папке C:\wacs\crt сгенерируются 3 файла:
- имя_домена-crt.pem — сам сертификат;
- имя_домена-key.key — файл ключа;
- имя_домена-chain.pem — цепочка доверия, включает корневой и промежуточный сертификаты Let’s Encrypt.
Теперь вы можете использовать их в TrueConf Server, как показано в нашей статье.