Обнаружили серьёзную проблему в штатном механизме автоматического обновления SSL-сертификатов BitrixENV 9.0.10 (AlmaLinux 9).
21.10.2026 произошёл production-инцидент: после перезагрузки сервера nginx не смог запуститься из-за отсутствующих файлов SSL-сертификатов нескольких доменов. В результате стали недоступны все сайты на сервере, включая сайты с действующими сертификатами.
Причина, обнаруженная при расследовании
В штатном файле /opt/webdir/bin/bx-dehydrated присутствует код:
[CODE]# 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[/CODE]
Команда find безусловно удаляет файлы старше 120 дней, независимо от результата обновления и того, используются ли эти файлы конфигурациями nginx.
В нашем случае несколько сайтов были отключены в CMS, их DNS-записи отсутствовали, но домены оставались зарегистрированными в dehydrated, а SSL-конфигурации — активными в nginx.
Let's Encrypt возвращал NXDOMAIN, новые сертификаты не выпускались. При этом старые сертификаты исчезли, а символические ссылки fullchain.pem, privkey.pem и другие остались указывать на несуществующие файлы.
После перезагрузки сервера:
[CODE]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[/CODE]
Подтверждение, что это штатный код BitrixENV
Установлен пакет:
bitrix-env-9.0-10.el9.x86_64
Сравнили SHA-256 оригинального файла из RPM (rpm -q --dump) и резервной копии скрипта, сделанной до исправления.
Обе контрольные суммы полностью совпадают:
9e154e4a3e2e0b40e4f8369b75106da30dc1d5928682ba3e15bd7160d72e
Следовательно, проблемный код поставляется непосредственно в установленном RPM, а не является нашей локальной модификацией.
Дополнительная проблема
Скрипт не проверяет код завершения dehydrated, и успешное выполнение последующей команды find потенциально маскирует ошибку обновления сертификатов на уровне cron.
Временное решение
Мы закомментировали опасную очистку, временно отключили конфигурации проблемных доменов и исключили их из реестра продления. Остальные сайты и автоматическое обновление действующих сертификатов работают.
Вопросы к разработчикам BitrixENV
[LIST=1][*]
Подтверждаете ли дефект в штатном bx-dehydrated?
[*]Планируется ли исправление в ближайших версиях BitrixENV 9.0.x?
[*]Можно ли реализовать очистку только после успешного обновления, с проверкой используемых сертификатов и символических ссылок?
[*]Как правильно сохранить временное исправление при последующих обновлениях bitrix-env, которые могут перезаписать скрипт?
[/LIST]Увеличение срока хранения со 120 до 365 дней проблему не решит, а только отсрочит её повторение.
Считаю дефект критичным по влиянию на доступность: ошибка обслуживания SSL одного неиспользуемого домена способна привести к отказу всего nginx и всех обслуживаемых им сайтов.