No Image

Let s encrypt windows

СОДЕРЖАНИЕ
767 просмотров
10 марта 2020

  • 23 апреля

Сегодня автоматизируем установку бесплатного SSL сертификата на сайт, который работает на web-сервере IIS 10. Операционная система Microsoft Windows 2016. Сертификат выдается лишь на 90 дней, но его всегда можно быстро обновить в автоматическом режиме.

Наличие SSL сертификата для сайта позволяет защитить данные пользователей, передаваемые по сети и гарантировать целостность переданных данных. Хотя, если вы попали на эту статью, то вы уже знаете для чего вам нужен сертификат.

Let’s Encrypt – центр сертификации, начавший работу в бета-режиме с 3 декабря 2015 года, предоставляющий бесплатные криптографические сертификаты X.509 для TLS-шифрования (HTTPS). Процесс выдачи сертификатов полностью автоматизирован. https://letsencrypt.org/

Для установки сертификата будем использовать консольную утилиту LetsEncrypt-Win-Simple.

Подготовка

LetsEncrypt-Win-Simple берём здесь:

Я скачал версию v2.0.5.246. Распаковываем архив.

Папка win-acme.v2.0.5.246 нам потом пригодится для автоматического продления сертификатов, которое будет запускаться через Task Scheduler, не удаляйте.

При запуске wacs.exe хочет .NET Framework 4.7.2.

Нас отправляют на сайт:

Качаем .NET Framework 4.7.2 и запускаем установку.

Принимаем лицензионное соглашение, Install.

.NET Framework 4.7.2 установлен.

Перезагружаем сервер. Подготовка к установке сертификатов завершена.

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

Запускаем wacs.exe под администратором.

Для начала сгенерируем простой сертификат. Для этого выбираем Create new certificate, N. Нас спрашивают, какой сертификат делаем.

Для тестирования генерируем простой сертификат без псевдонимов (для установки сертификата с псевдонимами выберите 2). ;Пишем 1. Нам показывают список всех доменов, забинденных в IIS.

Жертвой будет setpizza.com. Пишем 5.

Нужно зарегистрироваться, указываем свой e-mail администратора, или несколько через запятую.

Нужно принять лицензионное соглашение. Если написать "y", то откроется PDF файл с соглашением. Принимаем лицензионное соглашением.

Проверяем сертификат

Заходим на https://setpizza.com/

Всё работает, сертификат есть.

В хранилище сертификатов:

Let’s Encrypt устанавливает также сертификаты промежуточных центров сертификации.

443 порт добавился автоматически, сертификат выбрался автоматически.

В планировщике добавилось ежедневное правило для обновления сертификатов.

Дополнительные настройки

Вы можете настроить почту для уведомлений.

Как нам подсказывают, нужно ручками подправить файл settings.config.

Лучше генерировать сертификаты с псевдонимами, например:

Много лет я пользовался ОС Linux в качестве основной системы (где-то с начала 2000-х), но последнее время я всё больше занимаюсь дизайном и всё меньше чем-то другим. Можно сказать, что нужда выгнала меня из этого уютного и привычного гнёздышка. На Мак я пока решиться не могу, поэтому да, нынче я заново осваиваюсь в Windows и местами это даётся не легко 🙂 То, что делается в Линуксе на раз-два, здесь вызывает непредвиденные трудности и вопросы. При этом каждый раз скакать с системы на систему очень не удобно, хотя обе они спокойно себе соседствуют. Так и здесь, появилась необходимость быстренько сделать бесплатный SSL сертификат Let’s Encrypt для одного сайтика. Не так давно я описывал процесс создания сертификата с помощью утилиты Certbot и установку его на популярные хостинги REG.RU и SpaceWeb. Теперь я расскажу о том, как быстро выпустить сертификат Let’s Encrypt из-под Windows.

Если быть точнее, то этот способ универсален и для него не важно, какой системой вы пользуетесь. Дело в том, что выпускать сертификат мы будем в браузере. Для этого мы воспользуемся сервисом SSL For Free.

Читайте также:  Acer v3 551 64404g50makk

На первом экране необходимо указать ваш домен и нажать на кнопку Create Free SSL Certificate.

Далее необходимо выбрать способ загрузки подтверждающих файлов на ваш хостинг. Есть вариант автоматической загрузки по FTP, но я всё же предпочитаю сделать это руками, поэтому выбираем Manual Verification.

Далее необходимо скачать подтверждающие файлы (или файл). В данном случае файла два для домена без и с www.

В корне вашего сайта создаём каталог .well-known, внути него ещё один каталог acme-challenge и кладём в него скачанные файлы (или файл). Проверяем правильность переходом по ссылкам (п. 5). Если всё хорошо, то жмём Download SSL Certificate и получаем архив с файлами, которые используем для установки на свой хостинг.

В этом обзоре мы расскажем об особенностях установки и привязки бесплатного 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:inetpubletsencrypt

Откройте командную строку с правами администратора, перейдите в каталог 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%AppDataRoamingletsencrypt-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:inetpubletsencryptwacs.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 -> (.*)
Читайте также:  Фабульными inurl addnews html сначала пройдите регистрацию

В блоке 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:inetpubletsencryptImportRDGateway_Cert_From_IIS.ps1

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

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

Отметим, что сертификаты Let’s Encrypt в настоящий момент широко используются на сайтах многих крупных компаний и им доверяют все браузеры. Надеюсь, что судьба бесплатного центра сертификации Let’s Encrypt не постигнет участь WoSign и StartCom.

Комментировать
767 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector