Запуск Продукты Bitnami Документацияimaxe CLI Блог Контакты
imaxe tls сертификаты v1.0.0

HTTPS-сертификаты без боли

Выпускайте и продлевайте бесплатные сертификаты Let's Encrypt для вашего сервера и перезагружайте их без прерывания работы. Одна команда запускает всё; дальше сертификат продлевается сам.

$ imaxe tls issue app.ejemplo.com --email [email protected]
Версия
v1.0.0
Подкоманды
6
Конфигурация
/etc/imaxe/tls.yml
Требуется root
да
Продление
auto · timer

Что делает этот модуль #

Сертификат TLS — это то, что превращает http:// в https://: он шифрует соединение между вашими посетителями и сервером и заставляет браузер показывать замок вместо предупреждения «сайт не защищён».

Модуль tls берёт на себя весь жизненный цикл этого сертификата, опираясь на certbot: запрашивает его у Let's Encrypt (бесплатного и признанного центра), доказывает, что домен ваш, через испытание ACME, устанавливает сертификат туда, где его ожидает ваш веб-сервер, и продлевает его автоматически до истечения срока — без необходимости об этом помнить.

Перед началом

Ваш домен (например, app.ejemplo.com) должен указывать по DNS на IP этого сервера, а порт 80 должен быть доступен для испытания HTTP-01. Иначе выпуск завершится ошибкой на шаге проверки.

Краткое руководствопошаговые задачи

Типовые задачи #

Выберите, что нужно сделать. В каждом рецепте команда уже написана — просто замените домен и почту на свои и нажмите Копировать.

1

Выпустить мой первый сертификат

Получите замок HTTPS для вашего домена за минуту.

Подключитесь по SSH к серверу под пользователем ubuntu.

Выполните команду, заменив домен и почту на свои (почта используется только для оповещения об истечении срока):

терминал
$ sudo imaxe tls issue app.ejemplo.com --email [email protected]

Подождите несколько секунд. Вы увидите ход испытания и в конце — дату истечения срока.

Ваш сайт уже загружается по https:// с замком. Автоматическое продление активировано — больше ничего делать не нужно.
2

Посмотреть, какие есть и когда истекают

Проверьте одним взглядом состояние ваших сертификатов.

Быстрая сводка общего состояния и таймера продления:

терминал
$ sudo imaxe tls status

Нужны детали по каждому домену — с оставшимися днями и путём к fullchain? Используйте list:

терминал
$ sudo imaxe tls list
Если у какого-то домена осталось мало дней, перейдите к рецепту Принудительно продлить.
3

Принудительно продлить

Обычно это происходит автоматически, но при необходимости можно ускорить.

Продлите все сертификаты, срок которых скоро истекает (именно это делает таймер):

терминал
$ sudo imaxe tls renew

Хотите сначала прогнать вхолостую без записи на диск или продлить, даже если ещё есть дни? Добавьте --dry-run или --force:

терминал
$ sudo imaxe tls renew --dry-run
$ sudo imaxe tls renew --force
Веб-сервер сам перезагружается с новым сертификатом. Ваши посетители не замечают никакого перерыва.
4

Отозвать сертификат

Аннулирует сертификат в центре (например, если ключ утёк).

Отзовите сертификат домена в Let's Encrypt, указав причину, если она известна:

терминал
$ sudo imaxe tls revoke app.ejemplo.com --reason keycompromise
Сертификат сразу перестаёт быть действительным. Если домен по-прежнему используется, выпустите новый командой issue.
5

Удалить сертификат с диска

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

Удалите сертификат и его ключи с диска. Внимание: это не отзывает его в центре — для этого сначала используйте revoke.

терминал
$ sudo imaxe tls delete tienda.ejemplo.com
Домен исчезает из imaxe tls list, а его автоматическое продление прекращается.
Что-то не сработало?

Самая частая ошибка — DNS ещё не распространился или порт 80 закрыт. Подождите несколько минут и повторите. Если проблема сохраняется, сначала попробуйте в тестовом режиме с --staging (см. справочник), чтобы не израсходовать лимит попыток.

Справочник CLIкоманды, флаги и файлы

Синопсис #

использование
imaxe tls <subcomando> [<dominio>...] [--email CORREO] [flags]

Подкоманды, затрагивающие сертификаты, требуют привилегий root (используйте sudo), потому что пишут в /etc/imaxe/ и перезагружают системные сервисы. Добавьте --json к list или status, чтобы получить машиночитаемый вывод, пригодный для скриптинга.

Подкоманды #

ПодкомандаЧто делаетЗначимые флаги
issueВыпускает сертификат для одного или нескольких доменов, проходя испытание ACME.--email, --webroot, --standalone, --staging
renewПродлевает сертификаты, срок которых скоро истекает, и перезагружает веб-сервер. Подходит для таймера.--dry-run, --force
listВыводит управляемые сертификаты с оставшимися днями и путём к fullchain.--json
statusСводка: число сертификатов, скоро истекающие и состояние таймера продления.--json
revokeОтзывает сертификат по домену в центре (ACME).--reason
deleteУдаляет сертификат и его ключи с диска. Не отзывает в ACME.

Аргументы и флаги #

ФлагТипПо умолчаниюОписание
<dominio> обяз.string…Один или несколько доменов для сертификата. В issue первый — основной (CN), остальные — SAN. В revoke/delete — домен, над которым выполняется операция.
--emailstringtls.ymlКонтактная почта учётной записи ACME. Обязательна при первом issue; далее повторно используется из tls.yml.
--webrootpath/var/www/htmlКорневой каталог для испытания HTTP-01. Метод по умолчанию.
--standaloneboolfalseИспользует встроенный сервер certbot вместо webroot. Требует свободного порта 80.
--stagingboolfalseИспользует тестовую среду Let's Encrypt (не учитывается в лимите частоты запросов). Сертификат не будет доверенным.
--dry-runboolfalseВ renew имитирует продление без записи на диск.
--forceboolfalseВ renew продлевает, даже если срок ещё не близок к истечению.
--reasonenumunspecifiedВ revoke: unspecified, keycompromise, superseded, cessationofoperation.
--jsonboolfalseВ list/status выдаёт результат в виде JSON в stdout.

Файлы и пути #

ПутьСодержимое
/etc/imaxe/tls.ymlКонфигурация модуля: почта по умолчанию, метод (webroot/standalone), webroot, staging, автопродление и хук перезагрузки.
/etc/letsencrypt/live/<dominio>/Сертификат (fullchain.pem) и приватный ключ (privkey.pem), управляемые certbot.
/var/log/imaxe/tls.logСтруктурированный журнал каждого выпуска, продления и отзыва.
imaxe-tls.timerТаймер systemd, периодически запускающий renew.

Пример tls.yml:

/etc/imaxe/tls.yml
email: [email protected]
default_method: webroot
webroot: /var/www/html
staging: false
auto_renew: true
reload_hook: systemctl reload nginx

Коды возврата и логи #

Каждый запуск возвращает код, который можно проверить командой echo $? — удобно для цепочек в скриптах:

0OKОперация выполнена, изменений не требуется.
1ERRОбщая неклассифицированная ошибка. Проверьте лог.
2USAGEНедопустимые или отсутствующие аргументы.
3CHALLENGEПроверка ACME не прошла (DNS/HTTP).
4RATELIMITДостигнут лимит Let's Encrypt.
5RELOADВыпуск OK, но перезагрузка веб-сервера не удалась.

Следите за логом в реальном времени во время отладки:

терминал
$ sudo journalctl -u imaxe-tls -f
$ sudo tail -f /var/log/imaxe/tls.log

Продвинутые примеры #

Несколько доменов в одном сертификате

Первый домен — основной; следующие добавляются как SAN, все в одном сертификате:

терминал
$ sudo imaxe tls issue ejemplo.com www.ejemplo.com \
    --email [email protected]

Безопасная проверка перед продакшеном

Проверьте всю цепочку в тестовой среде, чтобы не израсходовать реальный лимит. С --standalone настроенный веб-сервер не требуется:

терминал
$ sudo imaxe tls issue app.ejemplo.com \
    --email [email protected] --standalone --staging \
  || echo "falló con código $?"

Устранение неполадок #

СимптомВероятная причинаРешение
Возникает CHALLENGE (код 3)Домен не разрешается в этот хост или порт 80 закрыт.Проверьте запись A/AAAA и откройте порт 80 в security group; повторите.
Возникает RATELIMIT (код 4)Слишком много выпусков одного домена за неделю.Используйте --staging для проверки; дождитесь освобождения окна.
HTTPS загружается, но с предупреждениемВыпущено с --staging: сертификат не доверенный.Перевыпустите без --staging, чтобы получить действительный.
Возникает RELOAD (код 5)reload_hook указывает на несуществующий сервис.Настройте reload_hook в tls.yml и снова запустите renew.

Застряли с модулем TLS?

Напишите нам, приложив вывод «imaxe <module> status --json», и мы быстро ответим.

Связаться с поддержкой