Skip to content

Выпуск и продление сертификатов ​

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

Виды сертификатов ​

ВидКто создаётКто продлевает
Самоподписанныйпанель, сразу, без внешних сторон; действует годпанель
ACMEцентр сертификации, например Let's Encrypt, после проверки, что имя под вашим контролемпанель
Загруженныйвы, как сертификат и ключ PEMникто; замените его до истечения

Инбаундам REALITY сертификат не нужен вовсе: панель создаёт их ключи.

Кто проходит проверку ACME ​

Центр выпускает сертификат только после проверки, подтверждающей контроль над именем. Панель выбирает, кто её проходит:

ПроверкаКто проходитКогда работает
dns-01панель, через API вашего DNS-провайдера (Cloudflare, Alibaba Cloud DNS или acme-dns)всегда, для любого имени, включая wildcard и имена, которые не указывают ни на один ваш сервер
http-01, tls-alpn-01 через панельсервер панелиимя разрешается в сервер панели, и порт 80 или 443 там свободен
любая из трёх через узелузел, выбранный в поле Кто получаетдля http-01 и tls-alpn-01 — имя указывает на этот узел

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

Где хранятся сертификаты ​

  • В базе данных панели, вместе с ключами. Они входят в каждую резервную копию, и это ещё одна причина задать парольную фразу для резервных копий.
  • Не на узлах. Узел получает сертификат и его ключ внутри своей конфигурации, держит их в памяти и не хранит на диске. Единственный сертификат, который узел хранит, — его собственная идентичность для управляющего канала с панелью.
  • Данные учётной записи ACME тоже хранятся в базе, поэтому переживают замену контейнера.

Как сертификат доходит до инбаунда ​

Инбаунд или эндпоинт берёт сертификат из одного из трёх мест, которое задаётся в поле Сертификат TLS: собственный (записанный в его конфигурации), сертификат узла или сертификат из хранилища панели. У узла может быть и Запасной сертификат, который ставится на любой его TLS-инбаунд, у которого иначе сертификата не было бы, в том числе на инбаунд, чей файл сертификата отсутствует на узле.

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

Продление ​

Каждые 6 часов панель проверяет каждый сертификат, который может продлить:

  • Сертификату пора продлеваться за 30 дней до истечения или в последней трети срока, если он выпущен меньше чем на 90 дней.
  • Самоподписанный сертификат создаётся заново; сертификат ACME получается заново с той же проверкой, с которой был выпущен впервые.
  • Каждый узел, который его использует, получает новый как изменение на лету.
  • При неудачном продлении продолжает работать старый сертификат. Панель пробует снова при следующей проверке и создаёт panel.cert_renew_failed; удачное продление создаёт panel.cert_renewed.

Загруженный сертификат никогда не продлевается. Когда он приближается к истечению, панель создаёт panel.cert_expiring, чтобы уведомление могло вам напомнить.

Отпечатки меняются вместе с сертификатом ​

Самоподписанный сертификат нельзя проверить по центру сертификации, поэтому панель вставляет его отпечаток (pin) — хеш именно этого сертификата — в ссылки и профили пользователей. Отпечаток вычисляется при каждом выпуске или продлении сертификата.

Когда самоподписанный сертификат продлевается или выпускается заново, его отпечаток меняется. Приложения получают новый отпечаток при следующем обновлении подписки; до этого они отклоняют новый сертификат. Самоподписанные сертификаты действуют год, поэтому это случается примерно раз в год, и приложение, которое обновляется по обычному расписанию, этого не замечает. Сертификаты ACME никогда не закрепляются отпечатком, поэтому их продление ничего не меняет для приложений. См. От шаблона до ссылки.

Собственный сертификат панели ​

Мастер настройки создаёт собственный HTTPS-сертификат панели, по умолчанию самоподписанный, на все указанные вами адреса.

  • Он следует за вашими адресами. Задание домена панели или доменов подписки выпускает его заново так, чтобы он называл каждый из них, включая wildcard-домен подписки.
  • Он перезагружается без перезапуска. Веб-сервер панели проверяет свой сертификат каждые 10 секунд и переключается на новый, когда тот меняется. Неудачное обновление игнорируется, и продолжает работать последний рабочий сертификат.
  • Его можно заменить сертификатом ACME или загруженным сертификатом из хранилища либо файлами сертификата на диске, которыми вы управляете сами. Тогда в нём должно быть каждое используемое имя: домен, который сертификат не покрывает, даёт ошибку TLS в приложении.

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

Сертификаты туннелей и дополнений ​

  • Туннели с TLS получают самоподписанный сертификат на внутреннее имя туннеля сроком на десять лет, который другая сторона закрепляет отпечатком. Обе стороны — ваши собственные узлы, поэтому покупать и продлевать нечего.
  • Дополнения могут брать сертификат из хранилища панели, который панель продлевает, а дополнение забирает каждые несколько минут. Дополнению на другом сервере предлагаются только сертификаты, которые сервер панели не подтверждал, а собственный HTTPS-сертификат панели — никогда. См. Платформа дополнений.

Текст и изображения — CC BY 4.0.