Бесплатный экспресс-аудит сайта Безопасность, SEO, AI-поиск и 152-ФЗ — отчёт с баллами за минуту Проверить сайт
Обсудить проект

SSL-сертификат в BitrixVM: выпуск, продление и что делать при отзыве

В виртуальной машине сертификаты настраиваются через меню, в разделе управления веб-серверами пула — пункт Configure certificates. Внутри три действия: выпустить бесплатный сертификат Let's Encrypt, поставить свой и вернуть самоподписанный по умолчанию.

Под капотом выпуском занимается отдельная утилита (dehydrated), её настройки лежат в каталоге пользователя bitrix. Знать это полезно: половина сообщений об ошибках приходит именно оттуда.

Выпуск

Выберите Configure "Let's encrypt" certificate и укажите:

  • имя сайта в пуле;
  • все домены через запятую — обязательно и с www, и без, иначе половина посетителей увидит предупреждение;
  • адрес почты для уведомлений удостоверяющего центра.

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

Что ломается чаще всего

Соседний сайт с несуществующим доменом

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

Лечение: убрать из пула сайты с мёртвыми доменами или вернуть им сертификат по умолчанию, прежде чем выпускать новый соседу.

Задача «finished», а сертификата нет

В списке фоновых задач операция помечена завершённой, но на сайте по-прежнему старый сертификат. Смотреть нужно журнал самой задачи: в нём будет настоящая причина — не прошла проверка домена, не хватило прав, не доступен служебный путь.

Рабочая последовательность при таком сбое: сначала Restore default certificate, затем выпуск заново. Попытки выпускать поверх сломанного состояния обычно повторяют ту же ошибку.

Сайт перестал открываться по https

После установки сертификата браузер отдаёт ERR_SSL_PROTOCOL_ERROR, а откат к сертификату по умолчанию не помогает. Обычно это значит, что в конфигурации веб-сервера остались ссылки на файлы, которых нет, или путь к сертификату прописан не там. Проверьте конфигурацию nginx и журнал его запуска — служба может работать со старым конфигом, пока её не перезапустили.

Ошибка про «dubious ownership»

В журнале появляется сообщение вида fatal: detected dubious ownership in repository at '/home/bitrix/dehydrated'. Это не про сертификаты, а про права на каталог утилиты: он принадлежит одному пользователю, а запускается от другого. Чинится приведением владельца каталога в порядок.

Не хватило места на диске

Отдельная причина, которую не ищут: при заполненном диске сертификат не выпускается и не продлевается, а в довесок может не подняться веб-сервер. Если сертификат внезапно перестал продлеваться, проверьте свободное место первым делом.

Продление

Сертификаты Let's Encrypt действуют 90 дней. Машина проверяет их по расписанию и перевыпускает заранее — вмешиваться не нужно. Если продление не сработало, запустите выпуск для того же домена ещё раз: система проверит срок и обновит сертификат.

Частые причины, по которым автопродление ломается:

  • домен перестал указывать на сервер;
  • служебный путь /.well-known/ закрыт редиректом на https или правилом в конфигурации;
  • старая версия виртуальной машины: процедуру автопродления в своё время чинили, и на устаревших сборках она работает не всегда;
  • кончилось место на диске.

Свой сертификат

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

Если сертификат отозван

  1. Выпустите новый — через меню это минуты.
  2. Если причина в утечке ключа, не переиспользуйте старый ключ и проверьте, откуда он мог утечь: резервные копии в открытом доступе, передача по почте, доступ подрядчиков.
  3. Проверьте всё, что ходит к сайту по API: обмены с 1С, мобильные приложения, интеграции.

Проверка

После любых изменений откройте сайт и посмотрите срок действия и список доменов в сертификате. Отдельно проверьте адрес с www и без, а если сайтов в пуле несколько — каждый: сертификат выпускается на сайт, а не на сервер целиком.

Частые вопросы

Задача выпуска помечена завершённой, а сертификат не установился.

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

Выпускаю сертификат одному сайту, а падает из-за другого.

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

После установки сайт не открывается, ERR_SSL_PROTOCOL_ERROR.

Обычно в конфигурации веб-сервера остались ссылки на отсутствующие файлы или неверный путь к сертификату. Проверьте конфигурацию nginx и перезапустите службу — она может работать со старым конфигом.

Сертификат перестал продлеваться сам.

Проверьте по порядку: указывает ли домен на сервер, не закрыт ли путь /.well-known/ редиректом, хватает ли места на диске и не устарела ли версия виртуальной машины — процедуру автопродления в своё время чинили.

В журнале ошибка про dubious ownership.

Это права на каталог утилиты выпуска: он принадлежит одному пользователю, а запускается от другого. Приведите владельца каталога в порядок, и выпуск пойдёт.

Почему сертификат выпустился, а браузер ругается?

Чаще всего он выпущен не на все домены: нужны и адрес с www, и без него. Посмотрите список доменов в самом сертификате и выпустите заново со всем перечнем.

Нужно ли продлевать Let's Encrypt вручную?

Нет, машина проверяет сертификаты по расписанию и перевыпускает заранее. Вручную запускают выпуск, только когда автоматическое продление не сработало.