Обнаружили серьёзную проблему в штатном механизме автоматического обновления SSL-сертификатов BitrixENV 9.0.10 (AlmaLinux 9).
21.10.2026 произошёл production-инцидент: после перезагрузки сервера nginx не смог запуститься из-за отсутствующих файлов SSL-сертификатов нескольких доменов. В результате стали недоступны все сайты на сервере, включая сайты с действующими сертификатами.
Причина, обнаруженная при расследовании
В штатном файле /opt/webdir/bin/bx-dehydrated присутствует код:
| Код |
|---|
# update certificates /home/bitrix/dehydrated/dehydrated -c --keep-going > $LOG 2>&1 # delete old certificates find $CERT_DIR/ -type f -mtime +120 -delete >>$LOG 2>&1 |
Команда find безусловно удаляет файлы старше 120 дней, независимо от результата обновления и того, используются ли эти файлы конфигурациями nginx.
В нашем случае несколько сайтов были отключены в CMS, их DNS-записи отсутствовали, но домены оставались зарегистрированными в dehydrated, а SSL-конфигурации — активными в nginx.
Let's Encrypt возвращал NXDOMAIN, новые сертификаты не выпускались. При этом старые сертификаты исчезли, а символические ссылки fullchain.pem, privkey.pem и другие остались указывать на несуществующие файлы.
После перезагрузки сервера:
| Код |
|---|
nginx: [emerg] cannot load certificate .../fullchain.pem: BIO_new_file() failed No such file or directory nginx: configuration file /etc/nginx/nginx.conf test failed |
Подтверждение, что это штатный код BitrixENV
Установлен пакет:
bitrix-env-9.0-10.el9.x86_64
Сравнили SHA-256 оригинального файла из RPM (rpm -q --dump) и резервной копии скрипта, сделанной до исправления.
Обе контрольные суммы полностью совпадают:
9e154e4a3e2e0b40e4f8369b75106da30dc1d5928682ba3e15bd7160d72e
Следовательно, проблемный код поставляется непосредственно в установленном RPM, а не является нашей локальной модификацией.
Дополнительная проблема
Скрипт не проверяет код завершения dehydrated, и успешное выполнение последующей команды find потенциально маскирует ошибку обновления сертификатов на уровне cron.
Временное решение
Мы закомментировали опасную очистку, временно отключили конфигурации проблемных доменов и исключили их из реестра продления. Остальные сайты и автоматическое обновление действующих сертификатов работают.
Вопросы к разработчикам BitrixENV
Подтверждаете ли дефект в штатном bx-dehydrated?
Планируется ли исправление в ближайших версиях BitrixENV 9.0.x?
Можно ли реализовать очистку только после успешного обновления, с проверкой используемых сертификатов и символических ссылок?
Как правильно сохранить временное исправление при последующих обновлениях bitrix-env, которые могут перезаписать скрипт?
Увеличение срока хранения со 120 до 365 дней проблему не решит, а только отсрочит её повторение.
Считаю дефект критичным по влиянию на доступность: ошибка обслуживания SSL одного неиспользуемого домена способна привести к отказу всего nginx и всех обслуживаемых им сайтов.