Bitrix VM 7 не обновляются сертификаты letsencrypt

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

Оставьте ответ

Ваш адрес email не будет опубликован.

÷ 2 = 2