https://klondike-studio.ru/blog/bitrix-vm-ne-obnovlyayutsya-sertifikaty-letsencrypt/
Не перевыпускаются сертификаты letseycrhpt на Bitrix VM 7.3.(0-3)
Код ошибки: DLG_FLAGS_SEC_CERT_DATE_INVALID
Такую ошибку я видел уже несколько раз на серверах клиентов и всегда она ставила их в тупик, поскольку выдачей сертификатов занимается сама VM
Если у вас сертификат не смог обновиться то проверим смело:
- Удалите старые сайты, А запись которых не ведет на этот сервер, но сертификат пытается выпуститься на этом сервере.
- Убедитесь что ААА — запись отсутствует, letsencrypt не поддерживает эту запись
- Убедитесь что для домена www есть А запись и она отдается с этого же сервера.
- У вас есть место на сервере.
- Вы уже создали 5 раз за неделю сертификат.
Если сертификат генерируется но не применяется, сразу смотрим патч внизу.
Если все вышесказанное уже сделано, то смотрим как генерируется сертификат в Bitrix VM 7.
В /etc/letsencrypt ничего нет. Так же ничего нет в crontab, да и вообще certbot тоже нет.
В Bitrix VM 7 используется dehydrated
Запустим генерацию сертификатов аналог certbot renew
cd /home/bitrix/dehydrated/ && ./dehydrated -c
Смотрим на чем встала генерация, и исправляем.
В том же каталоге лежит файл со списком доменов для обновления /home/bitrix/dehydrated/domains.txt
Убедимся что ничего не сломалось
nginx -t
Все что нам остается это применить сертификаты.
nginx -t && nginx -s reload
или
systemctl reload nginx
Иногда сертификаты сгенерированны, и установлены, но не примерились автоматически.
Если такая ситуация повторяется просто поставьте на крон применение сертификатов.
* */12 * * * /usr/sbin/nginx -t && /usr/sbin/nginx -s reload >/dev/null 2>&1
Ну и если это не помогло а ошибок при генерации сертификатов уже нет, то пересоздадим сертификат заново в меню VM 8 -> 3 ->1 ( и на вопрос о перегенерации отвечаем да) ждем минуту а желательно открываем в инкогнито и проверяем.
Где и что смотреть
Запустить генерацию letsencrypt сертификата с консоли:
sudo -u root /opt/webdir/bin/bx-sites -a configure_le --site "site.ru" --email "le@site.ru" --dns "site.ru www.site.ru" -o json
Лог генерации битрикс вм:
/opt/webdir/temp/номер вашей задачи
Лог генерации сертификата:
/home/bitrix/dehydrated_update.log
Сами сертификаты:
/home/bitrix/dehydrated/certs
Так же из-за способа проверки валидности сертификата самой вм, возможна ошибка
"type": "urn:acme:error:rateLimited", "detail": "Error creating new cert :: too many certificates already issued for exact set of domains: site.ru,www.site.ru: see https://letsencrypt.org/docs/rate-limits/", "status": 429
Возникнуть она может по двум причинам
— Вы действительно слишком часто его создавали
— Алгоритм обновления сертификата дожидается валидного завершения от ВСЕХ сайтов! При том он их действительно принудительно пере создает (даже валидные сертификаты).
Как следствие сертификат может быть даже реально создан, но поскольку ожидается код завершения по всем сертификатам на сервере и какой-то из них ошибочный то ни один из сертификатов не примерится, даже если он реально нормальный.
Тех поддержка обещала исправить баг в коде, однако сроки не называют, так что предлагаю собственный патч на VM
#!/bin/bash # патчим баг битиркс вм принудительные генерации сертификатов. if cat /etc/ansible/roles/web/tasks/dehydrated.yml | grep '/home/bitrix/dehydrated/dehydrated -c --force'; then sed -i 's/dehydrated -c --force/dehydrated -c/g' /etc/ansible/roles/web/tasks/dehydrated.yml fi
Поскольку попытки действительно кончились, все что нам остается это дождаться следующего дня и убедиться что теперь сертификаты не только создаются но и нормально применяются.
Отозвать сертификат, и вернуть дефолтный Bitrix сертификат можно вот так:
sudo -u root /opt/webdir/bin/bx-sites -a reset_cert --site "site.ru" -o json
Обратите внимание
ВМ 7.3.4 — полностью изменили выдачу сертификатов на классическую certbot