SSL-сертификаты
Автоматически выпускает и продлевает сертификаты для веб-служб; их также можно экспортировать для другого ПО.
Возможности
- Автоматический выпуск и продление по ACME DNS-01 с использованием DNS-провайдеров из раздела динамического DNS, без открытия портов 80 / 443;
- ACME HTTP-01: DNS-провайдер не нужен, но порт 80 каждого домена должен быть доступен из интернета; wildcard не поддерживается;
- wildcard-сертификаты и EAB (например, ZeroSSL);
- загрузка существующего сертификата или чтение из файлов;
- вывод в каталог: после изменения сертификата файлы записываются в указанный каталог и запускается скрипт, чтобы другие сервисы могли перезагрузиться;
- автоматическое развёртывание: после изменения сертификат копируется в несколько локальных каталогов, отправляется по SSH на другие хосты с выполнением команды или перезапускаются Docker-контейнеры, которые его используют.
Проверка HTTP-01
Выберите HTTP-01 в поле «Способ проверки» сертификата. При выпуске CA обращается к http://<домен>/.well-known/acme-challenge/<token>:
- если веб-служба уже слушает порт 80, она отвечает сама, не затрагивая существующие сайты;
- если порт 80 свободен, Gately временно слушает его на время выпуска и сразу закрывает после завершения;
- если роутер пробрасывает публичный порт 80 на другой порт этого хоста, укажите этот порт в поле «Временный порт».
Домашние провайдеры нередко блокируют входящие соединения на порт 80 — в этом случае используйте DNS-01.
Вывод сертификатов
После включения сертификата Gately записывает .crt, .key, .pem и _issuerCertificate.crt в каталог вывода и выполняет скрипт, срабатывающий при изменении.
Автоматическое развёртывание
В блоке «Автоматическое развёртывание» сертификата можно добавить несколько целей развёртывания; они срабатывают после выпуска, продления или обновления сертификата:
- Копировать в локальный каталог: сертификат записывается в каталог на этой машине, после чего локально выполняется команда «Выполнить после копирования». Можно добавить несколько каталогов, у каждого своя команда. Если файлы сертификата в каталоге удалены или изменены, следующая проверка скопирует их снова. Если Gately работает в Docker, каталог и команда находятся внутри контейнера;
- Загрузить на SSH-хост: выберите существующее SSH-подключение из веб-терминала — используются его адрес, способ аутентификации и прокси. Файлы сертификата (
<примечание>.crt,.key,.pem,_issuerCertificate.crt— как при сопоставлении сертификата, поэтому «Примечание» обязательно) записываются в «Удалённый каталог», после чего на удалённом хосте выполняется команда из поля «Выполнить после загрузки», напримерsystemctl reload nginx; в команде доступны$certName,$certDir,$certFile,$keyFile. Файлы сначала записываются во временные с нужными правами, а затем переименовываются с заменой; права на закрытый ключ — 0600; - Перезапустить локальные контейнеры: после смены сертификата выбранные Docker-контейнеры перезапускаются по очереди; подходит для сервисов, которые монтируют каталог сопоставления и загружают новый сертификат только после перезапуска.
«Копировать в локальный каталог» и «Загрузить на SSH-хост» позволяют задать имена файлов сертификата (полная цепочка) и закрытого ключа, например fullchain.pem и privkey.pem. Если заданы оба, записываются только эти два файла, а примечание может быть пустым; если поля пусты, используются имена из сопоставления сертификатов. $certFile и $keyFile в команде указывают на фактически записанные файлы.
Автоматическое развёртывание не доверяет неизвестным хостам: к выбранному SSH-подключению нужно один раз подключиться в веб-терминале, чтобы сохранить ключ хоста, и только после этого сертификат будет отправляться. При ошибке развёртывание повторяется каждый час и генерируется событие «Сертификат: ошибка развёртывания», на которое можно подписаться в Центре уведомлений. Кнопка «Развернуть сейчас» на карточке сертификата игнорирует интервал повтора, сразу развёртывает сертификат на все включённые цели и показывает результат по каждой из них.
При редактировании сертификата цели, настройки которых не изменились, повторно не выполняются; после изменения удалённого каталога, команды или контейнеров развёртывание выполняется заново один раз.
Замечания по безопасности
Закрытые ключи хранятся в ssl.json в каталоге конфигурации. Берегите этот файл, а при добавлении в систему контроля версий убедитесь, что репозиторий закрытый.
Миграция с Lucky
Уже выпущенные сертификаты импортируются как есть и не запрашиваются повторно до истечения срока. Для ZeroSSL учётные данные EAB из Lucky используются для регистрации нового аккаунта ACME. Подробности см. в руководстве по миграции.