Выпуск и продление сертификатов
Панель хранит каждый 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-сертификат панели — никогда. См. Платформа дополнений.
Связанные страницы
- Сертификаты: выпуск, назначение и замена сертификатов.
- Модель безопасности: сертификаты, которые защищают канал между панелью и узлами.
