Если вы когда-нибудь автоматизировали получение TLS-сертификатов через Let's Encrypt или другой ACME-совместимый CA, то наверняка сталкивались с
lego. lego — это ACME-клиент и библиотека на Go, которая поддерживает более 210 DNS-провайдеров и работает на всех основных платформах. Недавно вышел апдейт, давайте глянем что там.Одна команда вместо двух
Главное изменение в CLI: команды
run и renew объединены в одну lego run. Она сама понимает, нужно получить новый сертификат или продлить существующий. Флаги переехали с глобального уровня на уровень команды.Было в v4:
lego --dns cloudflare -d '*.example.com' -d example.com run
Стало в v5:
lego run --dns cloudflare -d '*.example.com' -d example.com
Конфигурационный файл
Теперь можно описать всё в
.lego.yml и не городить длинные команды в кроне или CI. Сертификаты, челленджи, аккаунты, хуки, логирование — всё в одном файле. Есть JSON Schema для валидации:
challenges:
cf:
dns:
provider: cloudflare
certificates:
my-cert:
challenge: cf
domains:
- example.com
- '*.example.com'
После этого достаточно передать креды через переменные окружения (или dotenv) и запустить:
CLOUDFLARE_EMAIL="you@example.com" \
CLOUDFLARE_API_KEY="yourkey" \
lego
Управление аккаунтами, сертификатами и архивами
В v5 появились отдельные подкоманды для работы с данными lego.
Аккаунты:
lego accounts register, lego accounts recover, lego accounts keyrollover, lego accounts list.Сертификаты:
lego certificates list (статус и дата истечения), lego certificates revoke.Архивы:
lego archives list, lego archives restore.Хуки жизненного цикла
Можно повесить скрипты на три этапа выпуска сертификата.
pre-hook срабатывает до получения или продления (только если реально что-то произойдёт). deploy-hook — после успешного выпуска. post-hook — после завершения операции в любом случае.lego run -d 'example.com' --deploy-hook='./my-deploy-hook.sh'
Или через конфиг:
hooks:
pre:
command: './my-pre-hook.sh'
deploy:
command: './my-deploy-hook.sh'
post:
command: './my-post-hook.sh'
Хуки получают контекст через переменные окружения:
LEGO_HOOK_CERT_PATH, LEGO_HOOK_CERT_KEY_PATH и другие.Что ещё нового
Поддержка IPv6-only хостов через флаг
--ipv6only. Структурированное логирование в форматах text, colored и json. Короткие имена CA-серверов вместо полных URL:lego run --server='letsencrypt-staging' ...
lego run --server='zerossl' ...
lego run --server='googletrust' ...
Добавлено 24 новых DNS-провайдера, общее число перевалило за 210. EAB-креденшелы теперь нужны только при первой регистрации аккаунта, а не при каждом продлении.
Миграция с v4
В v5 есть ломающие изменения в CLI, структуре директорий и API библиотеки. Перед использованием нужно выполнить:
lego migrate
Эта команда перенесёт хранилище на новый формат. Полное руководство по миграции есть в документации проекта.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoLive
