Перейти к основному содержимому

Подготовка сервера для работы с обновленными доменами RuStore API

В связи с обновлением инфраструктуры RuStore, для продолжения работы с Public API RuStore необходимо:

  1. Установить корневые сертификаты Минцифры на сервер паблишера
  2. Перейти на использование новых доменов с суффиксом -m

Пример изменения домена:

  • Public API: public-api.rustore.rupublic-api-m.rustore.ru

Важно: Текущие хосты без суффикса -m будут постепенно выводиться из эксплуатации. Рекомендуем выполнить переход уже сейчас, чтобы снизить риски при отзыве международных сертификатов. В случае их отзыва доступ к API через старые домены может быть потерян.

Установка корневого сертификата Минцифры на сервере

Для Linux-серверов (Ubuntu/Debian)

Шаг 1. Скачать сертификаты

Выполните команды для загрузки корневого и промежуточного сертификатов с портала Госуслуг:

curl -o /usr/local/share/ca-certificates/russian_trusted_root_ca.crt \
"https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt"

curl -o /usr/local/share/ca-certificates/russian_trusted_sub_ca.crt \
"https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt"

Шаг 2. Обновить системное хранилище

sudo update-ca-certificates

Команда должна сообщить, что добавлено 2 новых сертификата: 2 added

Шаг 3. Проверить установку

Проверьте, что сертификаты попали в общий бандл:

grep -c "Russian Trusted" /etc/ssl/certs/ca-certificates.crt

Команда должна вернуть число больше 0 (обычно 2).

Шаг 4. Проверить доступность хоста

Проверьте доступность одного из хостов с суффиксом -m с валидацией цепочки сертификатов:

curl -v https://api-m.rustore.ru 2>&1 | grep -E "subject|issuer|SSL certificate verify"

Ожидаемый результат: В выводе не должно быть ошибок SSL certificate problem: unable to get local issuer certificate. Должна отображаться информация о сертификате.

Для дистрибутивов на базе RHEL/CentOS

Для Red Hat, CentOS, Fedora и подобных дистрибутивов:

# Скачать сертификаты в директорию anchors
curl -o /etc/pki/ca-trust/source/anchors/russian_trusted_root_ca.crt \
"https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt"

curl -o /etc/pki/ca-trust/source/anchors/russian_trusted_sub_ca.crt \
"https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt"

# Обновить хранилище
sudo update-ca-trust extract

Для приложений с собственным хранилищем сертификатов

Если ваше приложение или рантайм использует собственное хранилище доверенных сертификатов (не системное), корневой сертификат Минцифры нужно дополнительно добавить в него отдельно.

# Импорт корневого сертификата в хранилище Java
keytool -importcert -alias russian_trusted_root \
-file /usr/local/share/ca-certificates/russian_trusted_root_ca.crt \
-keystore $JAVA_HOME/lib/security/cacerts \
-storepass changeit -noprompt

# Импорт промежуточного сертификата
keytool -importcert -alias russian_trusted_sub \
-file /usr/local/share/ca-certificates/russian_trusted_sub_ca.crt \
-keystore $JAVA_HOME/lib/security/cacerts \
-storepass changeit -noprompt
примечание

Внимание: Пароль changeit является стандартным для cacerts. Если вы меняли пароль, используйте свой.

Пример для Python (requests, urllib3)

Python обычно использует системное хранилище или хранилище certifi. Если системное хранилище не работает, можно использовать переменную окружения:

export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt

Или явно указать путь к сертификатам в коде:

import requests
requests.get('https://api-m.rustore.ru', verify='/etc/ssl/certs/ca-certificates.crt')

Пример для Node.js Node.js использует системное хранилище или может использовать собственный бандл. Для работы с системным хранилищем установите переменную окружения:

export NODE_EXTRA_CA_CERTS=/etc/ssl/certs/ca-certificates.crt

Или в коде:

const https = require('https');
const fs = require('fs');

const agent = new https.Agent({
ca: fs.readFileSync('/etc/ssl/certs/ca-certificates.crt')
});

Переход на новые домены

После успешной установки сертификатов выполните следующие шаги:

  1. Проверьте сетевую доступность и валидность сертификата на новом адресе:
curl -I https://public-api-m.rustore.ru
curl -I https://api-m.rustore.ru

Ожидается ответ HTTP/1.1 200 OK или другой успешный код.

  1. Обновите конфигурацию вашего приложения, заменив хосты в соответствии с таблицей из раздела 1.

  2. Проведите тестирование всех интеграций с RuStore API на новых доменах.

  3. Разверните изменения в продакшн после успешного тестирования.

Рекомендации

  • Восстановление после сбоев: В случае проблем на новых доменах, для восстановления работы также потребуется установить сертификат Минцифры.

  • Сроки: Рекомендуем выполнить переход в ближайшее время. Текущие хосты будут постепенно выводиться из эксплуатации.

  • Тестирование: Обязательно протестируйте все методы API на новых доменах перед переключением production-окружения.

Проверочный чек-лист

  • Сертификаты скачаны и установлены в системное хранилище
  • Команда sudo update-ca-certificates показала 2 added
  • Проверка grep -c "Russian Trusted" показала > 0
  • Команда curl -v https://api-m.rustore.ru не содержит ошибок SSL
  • Обновлены DNS или конфигурация приложения на новые хосты
  • Протестированы все используемые методы API
  • Если используется собственное хранилище (Java, Python, Node.js) — сертификаты добавлены

Поддержка

При возникновении вопросов по работе с RuStore API обратитесь в службу поддержки RuStore по адресу support@rustore.ru.