Win acme как пользоваться
Перейти к содержимому

Win acme как пользоваться

  • автор:

Создание сертификата «Let’s Encrypt» на Windows

Антон Бааджи

Криптографические сертификаты служат цифровым аналогом удостоверения сайта, что позволяет шифровать подключения с использованием протокола TLS и тем самым обеспечивать безопасное соединение между сервером и клиентом.

Существуют как платные, так и бесплатные центры сертификации. Одним из бесплатных центров является Let’s Encrypt, который выдаёт сертификаты сроком на 90 дней с возможностью продления в автоматическом режиме.

Шаг 1: Подготовка

Для создания TLS сертификата на Windows скачайте программу ACME Simple (WACS). Далее следуйте инструкции:

Создание сертификата «Let’s Encrypt» на Windows 1

  1. Распакуйте скачанный архив в папку C:\wacs\ .
  2. В этой же папке создайте каталог crt.
  3. В брандмауэре Windows откройте Дополнительные параметрыПравила для входящих подключенийСоздать правилоДля порта, в поле Определённые локальные порты впишите через запятую порты 80 и 443 и нажмите Далее. Затем выберите пункт Разрешить подключение, снова нажмите Далее, укажите для каких профилей будет применяться правило (по умолчанию для всех) и после нажатия кнопки Далее сохраните правило под любым именем.

Шаг 2: Создание сертификата

Откройте командную строку (cmd) от имени администратора и запустите утилиту:

Далее поочерёдно выполните следующие команды, вводя в терминале буквы или цифры, соответствующие нужным пунктам. Например, для выполнения команды Create certificate (full options) надо будет ввести m и нажать Enter (на версии 2.2):

  1. Начните создавать сертификат с ручным указанием параметров, для чего выберите:
    • Create new certificate (full options);
    • Manual input.
      Создание сертификата «Let’s Encrypt» на Windows 2
  2. Укажите ваше доменное имя и два раза нажмите Enter для подтверждения.
    Создание сертификата «Let’s Encrypt» на Windows 3
  3. При желании вы можете создать отдельные сертификаты для поддоменов или хостов. В нашем примере выберем Single certificate.
    Создание сертификата «Let’s Encrypt» на Windows 4
  4. Затем последовательно выберите:
    • [http] Serve verification files from memory;
    • RSA key;
    • PEM encoded files (Apache, nginx, etc.).
      Создание сертификата «Let’s Encrypt» на Windows 5
  5. Укажите папку для сохранения сертификатов C:\wacs\crt .
  6. Вам будет предложено установить пароль для приватного ключа. Выберите None;
    Создание сертификата «Let’s Encrypt» на Windows 6
  7. После этого выберите:
    • No (additional) store steps ;
    • No (additional) installation steps .
      Создание сертификата «Let’s Encrypt» на Windows 7
  8. Укажите адрес электронной почты для уведомлений об ошибках.
  9. На дополнительные вопросы отвечайте следующим образом:
    • на вопрос 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 .

Если для указанного доменного имени ранее уже генерировался сертификат, вы увидите соответствующее сообщение в строке Existing renewal с указанием даты окончания действия. Вы можете создать его заново, указав yes в ответ на вопрос Overwrite settings?.

В папке C:\wacs\crt сгенерируются 3 файла:

  • имя_домена-crt.pem — сам сертификат;
  • имя_домена-key.key — файл ключа;
  • имя_домена-chain.pem — цепочка доверия, включает корневой и промежуточный сертификаты Let’s Encrypt.

Теперь вы можете использовать их в TrueConf Server, как показано в нашей статье.

Сертификат Let’s Encrypt вручную, без автоматики, на windows ⁠ ⁠

Как и обещал, вот инструкция как получить сертификат SSL для сайта: бесплатно, без линуксов, если ваша панель управления сайтом не поддерживает его выпуск в автоматическом режиме.

Этот вариант подходит например тем, кто хостится у ру-центра ( nic.ru ) — там специально не вводят автоматику установки сертификата, чтобы продавать задорого то, что давно не нужно.

Увы, большинство инструкций или ведут на платные сервисы, или на линуксовые инструкции для хостингов, чтобы найти вариант «на домашнем компе и без заморочек с автоматикой», пришлось напрячься, так что если кому-то время сэкономлю — будет уже неплохо.

Итак, сперва нам надо скачать последнюю версию клиента win-acme с официального сайта: https://www.win-acme.com/

Сертификат Let

Распаковываем в удобное место, запускаем wacs.exe:

Сертификат Let

Выбираем N для создания нового сертификата, и 2 для ручной настройки:

Сертификат Let

Вводим адрес нашего домена, и тут я рекомендую через запятую ввести его в формате «www.домен».

В следующем пункте выбираем 3 (загрузить файл верификации по FTP):

Сертификат Let

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

Сертификат Let

В противном случае, вам надо будет сперва подключиться имеющимся пользователем по FTP и найти там папку с файлами сайта, и прописать путь именно до неё. На примере того же ру-центра, это выглядит как «ftp:// ftp.ИМЯ_АККАУНТА.nichost.ru:21/home/ИМЯ_АККАУНТА/ИМЯ_. «. На крайняк — с этим может помочь техподдержка хостинга, только не говорите, что вам для установки сертификата, потому что я однажды столкнулся с полным забиванием на мои запросы после этого (ага, как же иначе — посмел покуситься на потенциальную прибыль барыг).

Далее нам надо отказаться от загрузки вебконфига (просто тыкаем enter), ввести имя пользователя FTP, которого мы создали, выбрать ввод пароля в консоли (2), ввести сам пароль, отказаться от его сохранения (enter):

Сертификат Let

Далее надо выбрать тип файла, в котором нам отдадут сертификат. Почти наверняка вам понадобится формат PEM, так что выбираем пункт 2 (если вдруг не подойдёт — в техподдержку, или попробуйте другие форматы).

Следующим пунктом идёт место сохранения сертификата. Проще всего — в папке программы создайте папку SSL, и скопирeйте прямо из окна проводника путь (для вставки скопированного текста — нажмите правой кнопкой мыши в окне программы):

Сертификат Let

Сертификат Let

Далее соглашаемся ввести пароль от приватного ключа в консоли (2), придумываем и вводим пароль, отказываемся от сохранения (enter), и отказываемся от выполнения дополнительных скриптов (3):

Сертификат Let

Всё, осталось только дождаться завершения проверки и выпуска сертификата. Если всё правильно сделали — это максимум пара минут, и видим заветное «certificate . created«!

Сертификат Let

А в созданной папке для сертификатов появилось 4 файла:

Сертификат Let

Нам отсюда обычно нужны только файлы сертификата (-crt) и ключа (-key).

Дальше — надо загрузить их на хостинг, и тут уже зависит от конкретного хостинга. Я покажу на примере ру-центра.

В панели управления хостингом выбираем «Сайты«, потом ваш сайт, вкладку «Безопасность«, при необходимости включаем «Защищенное HTTPS-соединение» и нажимаем на «Добавить/сменить сертификат«.

Тут нам надо скормить полученный файлы хостеру. Выбираем напротив «сертификат» кнопку «загрузить файл«, грузим файл с crt в названии, аналогично с приватным ключом, вводим под ним пароль, который мы задали ранее, и нажимаем на «Установить«:

Сертификат Let

Поздравляю, сертификат установлен!

Сертификат Let

Поверить срок действия можно в разделе «безопасность» конкретного сайта:

Сертификат Let

Через без копеек 3 месяца надо будет повторить процесс, но win-acme сохранил данные (кроме паролей), и при запуске надо будет выбирать не «N: Create certificate«, а «R: Run renewals«.

Windows server + Apache + SSL от Let’s Encrypt

Причем сделаем мы это бесплатно, используя сертификат от Let’s Encrypt!

Работу будем выполнять на Windows Server 2019. (Так как на Linux инструкций полно!).

Предполагается, что веб страница у Вас уже опубликована на веб сервере, «проброшены» порты 80 и 443 и внешнее доменное имя «привязано» к вашему статическому IP!

К слову, все подготовительные работы, как и другие подробности на данную тему, можно посмотреть здесь >>

Да, если VPN нет возможности «поднять», или есть опасения, что трафик будет перехвачен, тогда действительно, стоит зашифровать подключение между «клиентом» и «сервером» используя протокол https!

И так начинаем!

Cкачаем консольную утилиту «Win-acme».

При помощи нее мы и получим SSL сертификат, что нужен нам для организации «шифрованного соединения», простыми словами https!

win-acme

После того как утилита «Win-acme» уже будет находится у нас на диске, мы приступим к дальнейшей подготовке.

Создадим себе каталог на диске, где установлен веб сервер Apache (У меня это директория C:\APACHE\Cert)

cert

В этой папке «Cert» мы и будем держать сертификаты для веб сервера Apache.

Теперь запускаем утилиту «Win-acme» (От имени Администратора) для создания этих сертификатов в директории «Cert».

Получаем SSL сертификат:

acme

Придерживаясь инструкций ниже, мы получим все необходимое для организации https на сайте.

Первым пунктом выбираем «Create сertificate (full options)» поставив букву M и кликнув Enter

terminal_get_cert

Затем пишем 2 — «Manual input» — Enter

terminal_get_cert_5

Укажем имя домена (реального домена, так как будет проверка).

У меня это web.kuharbogdan.com

terminal_get_cert6

Далее просто давим «Enter»

terminal_get_cert7

На следующем шаге — 2 «[http-01] Serve verification files from memory»

terminal_get_cert8

Выбираем RSA key, пункт также 2

terminal_get_cert9

Сертификаты у нас в PEM формате, и мы также выбираем соответствующий пункт: PEM encoded files (Apache, nginx, etc.)

terminal_get_cert10

На следующем шаге, укажем расположение папки «Cert», куда следует записать сертификаты.

terminal_get_cert11

terminal_get_cert12

И на этом наша работа почти закончена!

Выбираем пункт 5 — (No additional) store steps, так как нам больше ничего не требуется от утилиты!

terminal_get_cert13

И затем пункт 4 (Так как программа предлагает нам настроить «перевыпуск» сертификата и прочие).

Не забываем, что сертификат от Let’s Encrypt действует 3 мес, потом его повторно надо получить (Перевыпустить).

terminal_get_cert14

На следующем шаге, также «Отказ» пишем N + Enter

terminal_get_cert15

И наконец Q — Выход

terminal_get_cert16

Проверка полученных сертификатов:

Откроем наш каталог «Cert»

Cert17

Супер! Все сертификаты у нас! Нам осталось только их подключить + внести пару правок в «конфиги» веб сервера Apache!

Подключаем сертификат от Let’s Encrypt

Cert18

И первое что мы сделаем, так это укажем порт для SSL — наш 443 TCP/IP вместо 80.

Cert19

После чего, раскомментируем модуль LoadModule ssl_module modules/mod_ssl.so

Cert20

А также раскомментируем конфиг, где будут настройки SSL

Cert21

На этом мы прощаемся с httpd.conf, сохраняем файл и переходим к редактированию httpd-ssl.conf

Cert22

Первым делом, закомментируем 443 порт, мы его указали в httpd.conf

Cert23

Также закомментируем пути к логам (Если вы в «продакшн» выполняете данную настройку, тогда рекомендую создать файлы для записи логов и указать пути к ним!)

Мы вести запись ошибок веб сервера Apache не будем, (Для теста этого достаточно!).

Комментируем #SSLSessionCache «shmcb:$/logs/ssl_scache(512000)»

Установка бесплатного TLS/SSL сертификата Let’s Encrypt в IIS/RDS в Windows Server 2016/2012 R2

date17.03.2022
useritpro
directoryWindows Server 2012 R2, Windows Server 2016
commentsкомментариев 38

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

Windows ACME Simple скачать с github

Распакуйте архив в каталог на сервере с IIS: c:\inetpub\letsencrypt

letsencrypt - клиент wacs.exe

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

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

wacs создать новый ssl сертфикат для сайта iis

Затем нужно выбрать тип сертификата. В нашем примере нет необходимости использовать сертификат с псевдонимами (несколькими SAN — Subject Alternative Name), поэтому достаточно выбрать пункт 1. Single binding of an IIS site. Если вам нужен Wildcard-сертификат, выберите опцию 3.

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

wac выбрать сайт iis для создания сертфиката ssl

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

сгенерировать сертификат letsencrypt

Процесс генерации и установки 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.

сертфикат сайта IIS подписан Let’s Encrypt Authority X3

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

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»

Эту же команду вы можете использовать для ручного обновления сертфиката.

задание планировщика Windows для обновления tls сертфиката letsencrypt через win acme renew

Перенаправление трафика 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=»» pattern=»off» ignoreCase=»true» />
</conditions>
<action type=»Redirect» url=»https:///» appendQueryString=»true» redirectType=»Permanent» />
</rule>
</rules>
</rewrite>
</system.webServer>

Также вы можете настроить перенаправление трафика через URL Rewrite через графический интерфейс IIS Manager. Выберите Sites -> yoursitename -> URL Rewrite.

iis модуль URL Rewrite

Создайте новое правило Add Rule -> Blank rule.

Укажите имя правила и измените значения параметров:

  • Requested URL -> Matches the Pattern
  • Using -> Regular Expressions
  • Pattern -> (.*)

URL-Rewrite edit inbound rule

В блоке Conditions измените Logical Grouping -> Match All и нажмите Add. Укажите

  • Condition input ->
  • Check if input string -> Matches the Pattern
  • Pattern -> ^OFF$

url rewrite добавить условия

Теперь в блоке 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 <certThumbprint>

Для автоматического получения отпечатка сертификата с указанного сайта 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

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

Get ChildItem IIS Sites - получить индексы сайтов в IIS

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

ImportRDGateway_Cert_From_IIS - powershell скрипт для привязки ssl сертфиката из iis к rds

Теперь откройте задание планировщика 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.

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *