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

> Полный индекс документации для ИИ-агентов: [llms.txt](https://timeweb.cloud/llms.txt).

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

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

-   Минцифры — корневой сертификат Национального удостоверяющего центра Минцифры России (Russian Trusted CA).
    
-   ТЦИ — корневой ECDSA-сертификат [Центра сертификации ООО «ТЦИ»](https://tlscc.ru/). Центр выпускает TLS-сертификаты ECDSA и ГОСТ. В App Platform подключает только корневой ECDSA-сертификат.
    

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

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

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

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

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

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

-   «Сертификаты Минцифры»;
    
-   «Сертификаты ТЦИ».
    

![Включение сертификатов ](https://content.timeweb.com/assets/2bc2d53e-602b-4835-88af-7672c41d6dde.png?width=1056&height=546)

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

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

1.  Перейдите в раздел «App Platform» и выберите нужное приложение.
    
2.  Откройте вкладку «Настройки».
    
3.  В строке «Сертификаты» нажмите на кнопку «Изменить»
    
4.  В открывшемся окне отметьте нужные сертификаты и нажмите на кнопку «Сохранить». После сохранения запустится повторный деплой приложения.
    

![Настройка сертификатов ](https://content.timeweb.com/assets/ba208aaa-ed0c-4711-8c50-ab0edc42fe24.png?width=2782&height=1622)

## Установка сертификатов для приложений из 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`:

```bash
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`, задайте переменные:

```docker
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`:

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

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

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

```bash
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`:

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

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

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

```bash
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` и большинства приложений, использующих системное хранилище, не требуется.

ТЦИ

App Platform добавит в контейнер корневой ECDSA-сертификат ТЦИ:

-   `/usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt`.
    

### Node.js

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

```docker
ENV NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt
```

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

### Python

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

```docker
ENV REQUESTS_CA_BUNDLE=/usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt
ENV SSL_CERT_FILE=/usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt
```

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

### Go

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

```docker
ENV SSL_CERT_FILE=/usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt
```

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

JVM использует собственное хранилище сертификатов, поэтому импортируйте сертификат с помощью `keytool`:

```bash
RUN keytool -importcert -noprompt -trustcacerts \
    -alias tci_ecdsa_root \
    -file /usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt \
    -keystore "$JAVA_HOME/lib/security/cacerts" -storepass changeit
```

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

### .NET

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

```docker
ENV SSL_CERT_FILE=/usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt
```

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

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

```bash
RUN cp /usr/local/share/ca-certificates/tci-trusted/tci_ecdsa_root_ca.crt \
      /usr/local/share/ca-certificates/ \
   && update-ca-certificates
```

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