Автоматизация обновлений wildcard сертификата от Let’s Encrypt

Я уже писал об установке и автоматическом продлении wildcard сертификата от Letsencrypt, но всё оказалось немного не так.

Когда пришла пора обновления сертификата, то он почему то автоматически не обновился, а в логах появилась такая запись: “PluginError: An authentication script must be provided with –manual-auth-hook when using the manual plugin non-interactively.

То есть то, ради чего всё и затевалось, автоматическое продление сертификата, не сработало.

Разобравшись в проблеме, делюсь её решением ))

Получение нового или обновление существующего сертификата Let’s Encrypt

Во-первых пришлось перенести DNS с Mail.Ru на один из поддерживаемых certbot, я выбрал Cloudflare, всё написанное ниже относится к нему. Список всех поддерживаемых DNS можно посмотреть на официальном сайте утилиты certbot и по сути принцип работы с ними не сильно отличается.

Так же существует утилита lego, которая существенно расширяет список поддерживаемых DNS серверов. Скачать её можно на github, есть так же подробная документация с примерами использования.

Но вернёмся к “нашим баранам”.

Итак, DNS сервер мы перенесли, сменили записи у регистратора имён, подождали и убедились что всё работает. Далее займемся небольшой подготовительной работой.

В домашнем каталоге создадим папку .secrets и в ней файл cloudflare.ini. Название папки и файла на ваше усмотрение, права на неё только пользователю root.

chmod 0700 /root/.secrets/
chmod 0400 /root/.secrets/cloudflare.ini

Содержание файла cloudflare.ini (email и api key соответственно ваши):

dns_cloudflare_email = "grib69@gmail.com"
dns_cloudflare_api_key = "xxxxxxxxxx_Cloudflar_Global_API_Key_xxxxxxxxxx"

API Key получаем в личном кабинете Cloudflare

Cloudflare Global API Key
Cloudflare Global API Key

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

certbot certonly \
	--dns-cloudflare \
	--dns-cloudflare-credentials /root/.secrets/cloudflare.ini \
	--dns-cloudflare-propagation-seconds 25 \
	-d grib69.ru -d *.grib69.ru \
	--preferred-challenges dns-01

На выходе должны получить следующее:

Автоматизация обновлений wildcard сертификата от Let's Encrypt
Вывод команды certbot

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

А вот с автоматизацией обновлений в данном случае всё действительно очень просто. Создаем файл letsencrypt.renew, даём ему права на исполнение и забрасываем в /etc/cron.weekly. Содержание файла:

#!/bin/bash
/usr/bin/certbot renew --post-hook "systemctl reload nginx"

Ну или добавляем данную команду в crontab, кому как удобнее.

20.07.2021 Наверное всё же более правильно будет так:

systemctl enable certbot-renew.timer
systemctl start certbot-renew.timer

А все post-hook скрипты размещать в /etc/letsencrypt/renewal-hooks/post

На этом надеюсь эпопея с автообновлением сертификата закончилась ))

Первый вариант статьи здесь.

P.S. Если данная статья была Вам полезна, не поленитесь поставить лайк. Если остались вопросы не стесняйтесь задавать их в комментариях, будем разбираться вместе ))

Оцените данную запись
 [Всего голосов: 6 - Общая оценка: 5]

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

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