Nginx. Выпуск SSL-сертификата
Панель BeAdmin умеет выпускать бесплатные SSL-сертификаты Let's Encrypt для виртуальных хостов Nginx и сама поддерживает их в актуальном состоянии. Работа с сертификатом отличается в зависимости от режима виртуального хоста — конструктор или эксперт; об обоих сценариях, а также о ручном выпуске и перевыпуске подробно рассказали в этой статье.
Создание виртуального хоста в режиме конструктора
В режиме конструктора панель автоматически выпускает сертификат при создании виртуального хоста, если в форме включён переключатель «Подключение по HTTPS (порт 443)». В таком случае сертификат запрашивается сразу в процессе создания. Если вы выберете подключение по HTTP (порт 80) или укажете любой другой порт вручную, сертификат запрошен не будет.

Если выпустить сертификат не удалось, хост всё равно создастся и будет работать с самоподписанным сертификатом. Об ошибке панель сообщит в подробном уведомлении в правом верхнем углу экрана — конкретные сообщения и что с ними делать разобраны в статье Решение ошибок ACME при выпуске SSL-сертификата.
Создание виртуального хоста в режиме эксперта
В режиме эксперта сертификат не выпускается автоматически даже при наличии строки listen 443 ssl в конфиге. Чтобы получить сертификат, после сохранения хоста нужно отдельно нажать кнопку выпуска (см. следующий раздел).
В форме создания, при первом открытии редактора, в поле подставляется стартовый шаблон с двумя server-блоками — HTTP на 80 и HTTPS на 443. Чтобы ручной выпуск отработал, в шаблоне обязаны сохраниться три фрагмента:
server-блок на порту 80 с правильнымserver_name. Let's Encrypt подтверждает владение доменом по HTTP-01, и проверочный запрос приходит именно по 80-му порту.- Внутри 80-го блока —
location /.well-known/acme-challenge { proxy_pass http://127.0.0.1:5180; ... }с пометкой# DO NOT REMOVE — required for Let's Encrypt issuance via "Renew SSL". Через него идут проверочные запросы Let's Encrypt. - В 443-м блоке —
ssl_certificate /etc/ssl/beadmin/<server_name>/<server_name>.crtи парныйssl_certificate_keyс пометкой# DO NOT CHANGE — the panel writes the issued cert to these paths. По этим путям панель сохраняет выпущенный сертификат.
Если вы пишете конфиг с нуля или удалили любой из этих фрагментов — верните их, иначе ручной выпуск упадёт с ошибкой.
⚠️ Свои пути к сертификату в режиме эксперта
Выпущенный сертификат всегда сохраняется по фиксированным путям — /etc/ssl/beadmin/<server_name>/<server_name>.crt и парный .key. Конфиг хоста при выпуске не разбирается, и пути из директив ssl_certificate и ssl_certificate_key не учитываются.
Если в вашем конфиге эти директивы указывают на другое место, выпуск пройдёт без видимых ошибок: кнопка покажет успех, в БД появится новый сертификат, файл ляжет по стандартному пути BeAdmin — но Nginx будет читать сертификат с указанного вами пути и продолжит отдавать прежний, а внешне будет казаться, что выпуск ничего не изменил. Чтобы новый сертификат действительно подтянулся, либо верните в ssl_certificate* стандартные пути из дефолтного шаблона, либо после каждого выпуска вручную копируйте сертификат с пути BeAdmin на свой и перезагружайте Nginx.
Как выпустить или перевыпустить сертификат вручную
Запустить выпуск или перевыпуск сертификата можно из двух мест:
- В боковом списке модуля Nginx — иконкой-стрелкой справа от имени хоста. На десктопе она появляется только при наведении на строку.
- В разделе «Сайты и домены» — той же иконкой рядом с хостом; здесь же видны дата выпуска и срок действия текущего сертификата.

Обе кнопки делают одно и то же. Подтверждающего диалога нет: выпуск стартует сразу по нажатию. При наведении на кнопку появляется подсказка с текущим действием — «Выпустить сертификат», если сертификат не выпускался, и «Перевыпустить сертификат», когда сертификат уже есть. После успешного выпуска или перевыпуска панель сама перечитывает конфигурацию Nginx, и сайт сразу начинает отдавать новый сертификат.
В режиме конструктора кнопка работает только для хостов с портом 443 — для остальных при наведении появляется подсказка «Необходим порт 443 (https)». В режиме эксперта кнопка активна при любом конфиге. Пока идёт выпуск, иконка показывает индикатор загрузки.
Лимит запросов на стороне Let's Encrypt
Каждое нажатие кнопки выпуска — отдельный запрос в Let's Encrypt, и у Let's Encrypt есть общий лимит на домен и все его поддомены. Несколько нажатий подряд быстро упрутся в этот лимит: панель покажет ошибку «Слишком много запросов на выпуск SSL-сертификата» — выпуск временно станет недоступен.
Дождитесь итога и не нажимайте кнопку повторно, пока не разобрались, что пошло не так в прошлый раз.
Что происходит с сертификатом при смене режима
Сертификат при переключении между конструктором и режимом эксперта сохраняется в обе стороны. В диалоге переключения про сертификат ничего не говорится, и это нормально: с ним ничего не происходит.
Исходный конфиг при возврате из эксперта в конструктор тоже не теряется — к нему можно вернуться повторным переключением. Конструктор после возврата показывает свой последний сохранённый набор полей.
Что может пойти не так
После попытки выпуска хост всё ещё на самоподписанном сертификате
Скорее всего, прошлая попытка упала с ошибкой. Нажмите «Перевыпустить сертификат» и прочитайте сообщение — разбор конкретных формулировок есть в статье Решение ошибок ACME при выпуске SSL-сертификата.
После выпуска или перевыпуска браузер по-прежнему показывает старый сертификат
Панель сообщает об успехе, но в браузере остаётся предупреждение о небезопасном соединении (после первого выпуска) или прежние даты на сертификате (после перевыпуска). Проверить можно командой openssl s_client -connect <ваш-домен>:443 </dev/null 2>/dev/null | openssl x509 -noout -dates — если notBefore не обновился, новый сертификат уже на диске, но Nginx ещё работает со старым. Откройте модуль Nginx в панели и нажмите «Перезагрузить конфигурацию» — после этого сайт начнёт отдавать актуальный сертификат.
Режим эксперта, сертификат «выпустился», но Nginx отдаёт прежний
Скорее всего, директивы ssl_certificate и ssl_certificate_key в вашем конфиге указывают на путь, отличный от стандартного пути BeAdmin, — Nginx читает сертификат оттуда и нового не видит. Решений два: либо верните в ssl_certificate* стандартные пути из дефолтного шаблона, либо после каждого выпуска вручную копируйте сертификат со стандартного пути на свой и перезагружайте Nginx. Тот же сценарий подробнее разобран в предупреждении про свои пути выше.
Полезные ссылки
- Решение ошибок ACME при выпуске SSL-сертификата — разбор конкретных сообщений об ошибках Let's Encrypt.
- Nginx. Виртуальные хосты в режиме эксперта — стартовый шаблон, переключение между режимами, ручное подключение PHP-FPM.
- Nginx. Работа с виртуальными хостами — создание и редактирование хоста в режиме конструктора.