Настройка HTTPS от Let`s Encrypt с помощью Certbot

Настройка HTTPS от Let`s Encrypt с помощью Certbot Сертификаты

3: настройка приложения

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

Автоматизация обновления сертификата

Следующая команда выполнит пробное получение сертификата, который не будет установлен.

Автоматическое обновление wildcard-сертификатов

Процесс довольно прост. Для выпуска wildcard-сертификата необходимо выполнить DNS challenge request, используя протокол ACMEv2.

Вручную

Если для используемого веб-сервера нет плагина, воспользуйтесь следующей командой:

Исходные данные

  • Сервер под управением ОС Windows Server 2008 R2.
  • Почтовый сервер MDaemon версии 13.6.3.
  • На этом же сервере поднят IIS, обслуживающий корпоративный сайт организации.
  • MDaemon использовал собственный встроенный WEB-сервер WorldClient, который был доступен из интернета через порт 3000.

Лирическое отступление. несколько мыслей

Известно, что letsencrypt выдает сертификаты сроком на 90 дней

Нет проблемы настроить автоматическое обновление для конкретного домена и ряда поддоменов имена которых известны. Однако в настройке автоматического обновления letsencrypt wildcard сертификата есть определенные нюансы

Настройка bind для rfc2136

Сгенерируйте секретный TSIG-ключ:

$ tsig-keygen -a HMAC-SHA512 example-key

и добавьте его в файл конфигурации:

/etc/named.conf

Немного лирики

Что перво-наперво приходит в голову нормальному человеку, когда ему задают вопрос про замену сертификата? Вариантов два: или — а почему бы вам не купить его? Или — так есть же замечательная артель Let’s Encrypt, которая бесплатно раздаёт сертификаты направо и налево!

Про сертификаты:  Защищённые браузеры: выбираем лучший

Первый вариант был смущённо отвергнут как несостоятельный, ввиду того, что, как было сказано ранее, сервер работал, каши не просил, и объяснять руководству, почему оно должно расстаться с энной суммой вечнозелёных денег желания не было никакого. Второй вариант был просто суперпривлекательным, но на горизонте маячили кое-какие проблемы, которые предстояло объехать: оконность почтовика наводила на грустные размышления о его совместимости со скриптами LetsEncrypt, а получать и устанавливать сертификат вручную каждые три месяца совершенно не хотелось.

Поэтому был выбран второй вариант — только нужно было найти способ автоматизировать процессы получения сертификата и привязки его к почтовику.

Начали мы, естественно, с перекапывания великого и ужасного Интернета в поисках уже готового решения. И, о чудо! Оказалось, что доблестные программисты из Alt-N Technologies уже озаботились этим и выдали на-гора скрипты, делающие всё что нужно! Как говорится — снимаю шляпу!

Но и тут не обошлось без ложки дёгтя: эти скрипты просто так всем и каждому не раздавались, а были включены в состав последних версий MDaemon. Однако наш подопечный сервер имел на борту довольно старую версию MDaemon — 13.6.3. Софт был совершенно легальный, купленный некогда за самые что ни на есть настоящие деньги, работал замечательно и его апгрейд в планы руководства конечно же не входил (см. пункт про покупку сертификата).

Поэтому было принято решение попытаться хирургическим путём пересадить скрипты из новой версии MDaemon в старую и заставить их там заработать. Подумано — сделано: на виртуальную машину была установлена самая свежая на тот момент триальная версия MDaemon и из неё изъята папка LetsEncrypt со всем содержимым. Что теперь делать с этим добром? — читайте ниже.

Обязательные требования

Как было написано в

, скрипты LetsEncrypt для MDaemon не являются абсолютно универсальными и предполагают выполнение следующих обязательных условий:

  • Наличие оболочки PowerShell версии 3.0.
  • Наличие установленного фреймворка Microsoft .NET версии не ниже 4.0.
  • Наличие установленного пакета IIS Management Scripts and Tools.
  • Из интернета через порт 80 должен быть доступен WorldClient сервера — либо напрямую, либо через IIS.
Про сертификаты:  Результаты мониторинга максимальных процентных ставок кредитных организаций | Банк России

Как видим — часть из этих требований исходно не выполнялась, поэтому сначала была выполнена привязка WorldClient к IIS с целью пересадки его на порт 80. Информация о том, как это сделать была получена из

с сайта Alt-N.

Пара слов о «граблях»


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

Во-первых, практически в самом начале скрипта была реализована проверка на то, что параметр ‘EnableWCServer’ в файле ‘Mdaemon.ini’ установлен в ‘Yes’. И если это было не так, то скрипт немедленно завершал свою работу с выдачей сообщения о критической ошибке ‘Error:

WorldClient must be enabled’. Но, как это ни странно, в нашем случае этот параметр был установлен в ‘No’ — несмотря на то, что нами уже была выполнена привязка WorldClient к IIS и WorldClient прекрасно открывался из интернета. Недолго думая, мы отключили эту проверку, закомментарив её в скрипте. Это позволило скрипту продолжить работу.

Подготовка к установке ssl сертификата

Для начала сделаем backup директории

letsencrypt

sudo cp /etc/letsencrypt/ /etc/letsencrypt.backup -r


После чего необходимо удалить все конфигурационные файлы и сертификаты вашего сайта

rm -rf /etc/letsencrypt/live/${DOMAIN}
rm -rf /etc/letsencrypt/renewal/${DOMAIN}.conf
rm -rf /etc/letsencrypt/archive/${DOMAIN}

Если вы настраивали планировщик cron для автоматического обновления сертификата, то не забудьте удалить эту задачу.

Получение сертификат(ов)

Запросите сертификат для domain.tld, используя /var/lib/letsencrypt/ в качестве общедоступного пути:

Получение сертификата

Следующим шагом является запуск утилиты, которая в автоматическом режиме отыщет настроенные сервера. Напомню, что на моём сайте используется

Nginx

, поэтому и настройка будет производиться для этого типа сервера.

Управление блоками server в nginx

Следующий пример можно использовать во всех блоках server при управлении этими файлами вручную:

/etc/nginx/sites-available/example

Управление виртуальными хостами apache

Следующий пример можно использовать во всех виртуальных хостах при управлении этими файлами вручную:

Про сертификаты:  Истек сертификат Let’s Encrypt. Что делать?

Часть 2: создание в iis сайта для доступа к серверу worldclient

Примечание 1:

если у вас используется встроенный в MDaemon сервер WorldClient и он уже монопольно сидит на порту 80, то можете смело пропустить эту часть и перейти сразу к части 3.

Примечание 2: ‘Host name’ сайта должно быть таким-же, как полное доменное имя хоста MDaemon, по которому он доступен из интернета.

Часть 5: удаление всех следов «тестовой» жизнедеятельности

Если этого не сделать, то скрипт ещё пару месяцев будет продолжать выдавать нам «фальшивый» сертификат, несмотря на то, что мы внесли в скрипт нужные изменения.

Часть 7: первый «боевой» запуск

Выполняем старт скрипта вручную:

  1. Выделяем только-что созданную задачу в списке.
  2. Нажимаем ‘Run’ в правой панели Actions’. Никакого окна при этом не откроется.
  3. Время от времени рефрешим список задач — чтобы видеть изменения в поле ‘Status’: ‘Status’ должен смениться на ‘Run’. Рефрешим список, пока ‘Status’ снова не станет ‘Ready’.
  4. Смотрим результат выполнения скрипта в лог-файле ‘MDaemonLogsLetsEncrypt.log’.

Часть последняя — заключительная

В заключение хочу сказать, что во время написания статьи у меня уже не было доступа к боевому серверу, поэтому все скриншоты делались с виртуальной машины, на которую была установлена ещё более старая версия MDaemon — 13.0.4 — из-за чего внешний вид окон может отличаться от других версий.

Ну вот и всё. Всё что знал — рассказал. Поздравляю всех с наступающим Новым Годом! Здоровья вам и удачи!

Оцените статью
Мой сертификат
Добавить комментарий