Skip to content

Nginx. Выпуск SSL-сертификата ​

Панель BeAdmin умеет выпускать бесплатные SSL-сертификаты Let's Encrypt для виртуальных хостов Nginx и сама поддерживает их в актуальном состоянии. Работа с сертификатом отличается в зависимости от режима виртуального хоста — конструктор или эксперт; об обоих сценариях, а также о ручном выпуске и перевыпуске подробно рассказали в этой статье.

Создание виртуального хоста в режиме конструктора ​

В режиме конструктора панель автоматически выпускает сертификат при создании виртуального хоста, если в форме включён переключатель «Подключение по HTTPS (порт 443)». В таком случае сертификат запрашивается сразу в процессе создания. Если вы выберете подключение по HTTP (порт 80) или укажете любой другой порт вручную, сертификат запрошен не будет.

Переключатель «Подключение по HTTPS (порт 443)» в форме создания виртуального хостаПереключатель «Подключение по HTTPS (порт 443)» в форме создания виртуального хоста

Если выпустить сертификат не удалось, хост всё равно создастся и будет работать с самоподписанным сертификатом. Об ошибке панель сообщит в подробном уведомлении в правом верхнем углу экрана — конкретные сообщения и что с ними делать разобраны в статье Решение ошибок 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 — иконкой-стрелкой справа от имени хоста. На десктопе она появляется только при наведении на строку.
  • В разделе «Сайты и домены» — в строке домена. Если на домене есть сайт, раскройте его строку. Если сертификата нет, нажмите «Выпустить сертификат». После выпуска в строке появится отметка со сроком действия — «SSL · до …», — а вместо кнопки выпуска появится «Перевыпустить сертификат». Подробнее — в статье Сайты и домены. Домены и SSL‑сертификаты.
Строка домена example.net без сайта в разделе «Сайты и домены»: кнопки «Выпустить сертификат» и «Создать сайт» и значок удаленияСтрока домена example.net без сайта в разделе «Сайты и домены»: кнопки «Выпустить сертификат» и «Создать сайт» и значок удаления

Где бы вы ни нажали, кнопка делает одно и то же. Подтверждающего диалога нет: выпуск стартует сразу по нажатию. Подпись или подсказка у кнопки называет текущее действие — «Выпустить сертификат», если сертификат не выпускался, и «Перевыпустить сертификат», когда сертификат уже есть. После успешного выпуска или перевыпуска панель перечитывает конфигурацию Nginx, и сайт сразу начинает отдавать новый сертификат.

В боковом списке Nginx в режиме конструктора иконка работает только для хостов с портом 443 — для остальных при наведении появляется подсказка «Необходим порт 443 (https)». В режиме эксперта она активна при любом конфиге. Пока идёт выпуск, кнопка неактивна и показывает индикатор загрузки.

Лимит запросов на стороне Let's Encrypt ​

Let's Encrypt ограничивает число запросов с одного IP-адреса, а не с домена, поэтому лимит могут исчерпать и другие серверы с тем же внешним адресом. Если лимит исчерпан или у Let's Encrypt сбой, панель автоматически повторяет выпуск через другой центр сертификации. Ошибку «Слишком много запросов на выпуск SSL-сертификата» вы увидите, если выпуск не удался и там. Подробнее — в статье Решение ошибок ACME при выпуске 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. Тот же сценарий подробнее разобран в предупреждении про свои пути выше.

Полезные ссылки ​

BeAdmin © 2025. Все права защищены.