MAX-olymp

Сертификаты Минцифры

Домен platform-api2.max.ru подписан сертификатом Russian Trusted Sub CA (Минцифры России). Этого центра сертификации нет в стандартных наборах корневых сертификатов — ни в системном хранилище Linux-контейнера, ни в наборе certifi, которым пользуется Python.

Без этих файлов любой запрос к API MAX падает с ошибкой:

SSLCertVerificationError: unable to get local issuer certificate

Что положить в этот каталог

Два файла с официального ресурса Минцифры — страница «Сертификаты безопасности» на Госуслугах (gosuslugi.ru/crt), раздел для Linux / ручной установки:

Файл Назначение
russian_trusted_root_ca.pem корневой сертификат
russian_trusted_sub_ca.pem выпускающий

Нужны оба: сервер отдаёт цепочку, и без выпускающего проверка не сойдётся.

Подойдёт любое имя файла с расширением .pem, .crt или .cer — приложение подхватывает из каталога всё, что этим расширениям соответствует.

Как проверить, что всё встало

docker compose run --rm backend python -m scripts.check_connection

Скрипт покажет, какие сертификаты подхватились, и выполнит GET /me.

Почему файлов нет в репозитории

Каталог намеренно пуст: certs/* перечислен в .gitignore. Сертификаты скачиваются с первоисточника — так видно, что именно вы добавляете в список доверенных, и файлы не устаревают вместе с репозиторием.

Сертификаты подключаются томом (./certs:/app/certs:ro), а не копируются в образ, — заменить их можно без пересборки.