До 12.5 млн токенов на тест ИИ-агента
Вход/ Регистрация
На главную
Облачные сервисы

Подключение корневых сертификатов

Открыть в Markdown

Корневой сертификат подтверждает доверие к центру сертификации, который выпускает цифровые сертификаты. Если добавить корневой сертификат в доверенное хранилище, приложение сможет проверять подлинность выпущенных этим центром сертификатов и устанавливать защищенное HTTPS-соединение с ресурсами, которые их используют.

В App Platform можно подключить сертификаты следующих центров сертификации:

  • Минцифры — корневой сертификат Национального удостоверяющего центра Минцифры России (Russian Trusted CA).

  • ТЦИ — корневой ECDSA-сертификат Центра сертификации ООО «ТЦИ». Центр выпускает TLS-сертификаты ECDSA и ГОСТ. В App Platform подключает только корневой ECDSA-сертификат.

Эти сертификаты могут потребоваться, например, при работе с API банков и государственных организаций. По умолчанию они отсутствуют в доверенных хранилищах многих операционных систем, языковых сред и HTTP-библиотек, поэтому их необходимо добавить самостоятельно.

Подключить сертификаты можно для backend-приложениий, а также для приложений, развернутых с помощью Dockerfile или Docker Compose. Для  frontend-приложений сертификаты не требуются.

Подключение сертификатов

Сертификаты можно подключить при создании нового приложения или позже в настройках уже существующего. Подключайте сертификаты того центра сертификации, которым выпущен сертификат ресурса, к которому обращается приложение.

При создании приложения

Чтобы подключить сертификаты при создании приложения, на этапе «Настройка приложения» включите переключатели для нужных сертификатов:

  • «Сертификаты Минцифры»;

  • «Сертификаты ТЦИ».

Включение сертификатов

В существующем приложении

Чтобы подключить сертификаты к уже созданному приложению:

  1. Перейдите в раздел «App Platform» и выберите нужное приложение.

  2. Откройте вкладку «Настройки».

  3. В строке «Сертификаты» нажмите на кнопку «Изменить»

  4. В открывшемся окне отметьте нужные сертификаты и нажмите на кнопку «Сохранить». После сохранения запустится повторный деплой приложения.

Настройка сертификатов

Установка сертификатов для приложений из Dockerfile и Docker Compose

Для приложений, развернутых с помощью Dockerfile или Docker Compose, App Platform добавляет файлы сертификатов в контейнер, но не устанавливает их в доверенное хранилище автоматически. Настроить доверие к сертификатам необходимо самостоятельно. Для этого добавьте нужные инструкции в Dockerfile сервиса, который будет обращаться к внешнему ресурсу.

  • Минцифры
  • ТЦИ

App Platform добавит в контейнер три файла:

  • /usr/local/share/ca-certificates/russian-trusted/russian_trusted_root_ca.crt — корневой сертификат;

  • /usr/local/share/ca-certificates/russian-trusted/russian_trusted_sub_ca.crt — промежуточный сертификат;

  • /usr/local/share/ca-certificates/russian-trusted/russian_trusted_ca_bundle.crt — корневой и промежуточный сертификаты в одном файле.

В зависимости от рантайма может потребоваться объединенный файл или два отдельных сертификата.

Node.js

Задайте переменную NODE_EXTRA_CA_CERTS:

    
ENV NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/russian-trusted/russian_trusted_ca_bundle.crt

Переменная используется при запросах через https, fetch, axios и другие HTTP-клиенты. Вносить изменения в код приложения не требуется.

Python

Для приложений, использующих requests, httpx или aiohttp, задайте переменные:

    
ENV REQUESTS_CA_BUNDLE=/usr/local/share/ca-certificates/russian-trusted/russian_trusted_ca_bundle.crt ENV SSL_CERT_FILE=/usr/local/share/ca-certificates/russian-trusted/russian_trusted_ca_bundle.crt

Переменная REQUESTS_CA_BUNDLE используется библиотекой requests, а SSL_CERT_FILE — стандартным модулем ssl и библиотеками, которые работают через него.

Go

Задайте переменную SSL_CERT_FILE:

    
ENV SSL_CERT_FILE=/usr/local/share/ca-certificates/russian-trusted/russian_trusted_ca_bundle.crt

Java и другие JVM-языки

JVM использует собственное хранилище сертификатов, поэтому указать путь к объединенному PEM-файлу недостаточно. Импортируйте корневой и промежуточный сертификаты по отдельности:

    
RUN keytool -importcert -noprompt -trustcacerts \ -alias russian_trusted_root \ -file /usr/local/share/ca-certificates/russian-trusted/russian_trusted_root_ca.crt \ -keystore "$JAVA_HOME/lib/security/cacerts" -storepass changeit && \ keytool -importcert -noprompt -trustcacerts \ -alias russian_trusted_sub \ -file /usr/local/share/ca-certificates/russian-trusted/russian_trusted_sub_ca.crt \ -keystore "$JAVA_HOME/lib/security/cacerts" -storepass changeit

Инструкция подходит для Java, Kotlin, Scala и других языков, которые работают на JVM.

.NET

Задайте переменную SSL_CERT_FILE:

    
ENV SSL_CERT_FILE=/usr/local/share/ca-certificates/russian-trusted/russian_trusted_ca_bundle.crt

Установка в системное хранилище

Если приложение обращается к API через curl, wget, OpenSSL или другие инструменты, которые используют системное хранилище сертификатов, установите сертификаты в это хранилище:

    
RUN cp /usr/local/share/ca-certificates/russian-trusted/russian_trusted_root_ca.crt \ /usr/local/share/ca-certificates/russian-trusted/russian_trusted_sub_ca.crt \ /usr/local/share/ca-certificates/ \ && update-ca-certificates

Для выполнения команды в образе должен быть установлен пакет ca-certificates. После установки указывать путь к сертификатам для curl, wget и большинства приложений, использующих системное хранилище, не требуется.

 

Была ли статья полезна?
Ваш ответ поможет улучшить документацию
Пока нет комментариев