Let's Encrypt и конец срока действия IdenTrust DST Root CA X3

Тип статьи

Решение проблемы

Компетенции

Всем работающим в платформе

Необходимые права

SSH доступ c root

Версия платформы

2.18 и выше (указано дополнительно)

Статус

БЕТА

Сложность

легко

Полезные ссылки

https://habr.com/ru/post/580092/

Дополнительные сведения

Ubuntu 18.04

Описание проблемы

30 сентября 2021 года истек срок действия корневого сертификата IdenTrust DST Root CA X3. Это застрагивает все стенды с платформой, работающие на HTTPS с сертификатом от Let’s Encrypt. Могут перестать работать компоненты admin, smart-forms, viqube-admin, ssbi.

В версии 2.18 (вероятно в 2.19 и в 2.20 аналогично) перестают работать все перечисленные компоненты. В последней на момент написания статьи версии 2.23 (вероятно и в 2.21, и в 2.22) только smart-forms. Более ранние версии в статье не рассматриваются. Предположительно с 2.24 проблем не должно быть вовсе - реквест на исправление создан, его ссылка ниже.

Соответствующие разделы в веб администрировании могут быть недоступны. В логах компонентов будут ошибки, связанные с сертификатом. Пример ошибки для smart-forms:

The antiforgery token could not be decrypted. ---> System.Security.Cryptography.CryptographicException: The key {ab7c1f32-c3f3-4342-b8c0-e80cf0e5df0e} was not found in the key ring

The antiforgery token could not be decrypted. ---> System.Security.Cryptography.CryptographicException: The key {ab7c1f32-c3f3-4342-b8c0-e80cf0e5df0e} was not found in the key ring

 

Описание решения

Решение 1 (рекомендуется).

Генерируем сертификат с явным указанием нового корневого центра и все сразу должно работать. Проверено на 2.21.1.

certbot certonly --standalone -d bi.visiology.com --force-renewal --preferred-chain "ISRG Root X1"

Решение 2 (Далеко не всегда помогает).

1. Заходим в каждый контейнер, компонент которого не работает. Например для smart-forms (имя контейнера заменить на свое):

docker exec -it visiology_smart-forms-db.1.jsiby28xjvo10vk4jzaqocu06 bash

2. Редактируем файл /etc/ca-certificates.conf. Нужно найти строчку: mozilla/DST_Root_CA_X3.crt и поставить перед ней восклицательный знак. Пример:

3. Копируем файл на хост в папку /opt, пример:

4. В YML файлы дистрибутива платформы добавляем записи для монтирования файла (иначе после перезапуска платформы все изменения внутри контейнера пропадут). Для smart-forms это будет smart-forms.yml (сделать записи для всех двух ее докер сервисов):

5. Перезапускаем платформу.