Использование сертификатов НУЦ Минцифры в GigaChat
Для обмена сообщениями с моделями GigaChat нужно использовать публичный сертификат НУЦ Минцифры.
В противном случае, при выполнении запроса на получение токена доступа (POST /api/v2/oauth
), будет возвращаться ошибка:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain
Вы можете установить сертификаты на уровне приложения или на уровне операционной системы.
Установка сертификатов на уровне приложения
Вы можете скачать сертификаты для вашей ОС на портале Госуслуг.
- Python
- JavaScript
Для установки сертификатов выполните команду:
curl -k "https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cer" -w "\n" >> $(python -m certifi)
При выполнении команды сертификат скачивается и устанавливается автоматически.
Если для работы с GigaChat API вы используете библиотеку GigaChat, укажите путь к сертификату при инициализации:
from gigachat import GigaChat
# Используйте ключ авторизации, полученный в личном кабинете, в проекте GigaChat API.
with GigaChat(credentials="ключ_авторизации", ca_bundle_file="russian_trusted_root_ca.cer") as giga:
response = giga.chat("Какие факторы влияют на стоимость страховки на дом?")
print(response.choices[0].message.content)
Если вы используете Node.JS, задайте сертификаты в переменной среды NODE_EXTRA_CA_CERTS:
const path = require('path')
process.env.NODE_EXTRA_CA_CERTS= path.resolve(__dirname, 'dir', 'with', 'certs')
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'
Установка на уровне ОС
ОС Windows и MacOS
Перейдите на портал Госуслуг, скачайте сертификат для вашей ОС и следуйте инструкциям по установке.
ОС Linux
Перейдите на портал Госуслуг и скачайте корневой и выпускающий сертификаты для Linux в формате .crt
.
Затем установите их на компьютер.
Если вы скачали сертификаты по прямой ссылке в формате .pem
, конвертируйте их с помощью команды:
openssl x509 -outform der -in russiantrustedca.pem -out russiantrustedca.crt
Примеры установки сертификатов в разных версиях Linux
- Debian и Ubuntu
- RedHat Enterprise Linux 7
- Arch Linux
Создайте папку для хранения сертификатов:
sudo mkdir /usr/local/share/ca-certificates/russian-trusted
Скопируйте сертификаты в созданную папку:
sudo cp russian_trusted_root_ca_pem.crt russian_trusted_sub_ca_pem.crt /usr/local/share/ca-certificates/russian-trusted
Обновите хранилища доверенных сертификатов от имени суперпользователя с помощью команды
update-ca-certificates
:sudo update-ca-certificates -v
Убедитесь, что сертификаты установлены успешно с помощью команды
trust list | grep Russian
.В случае успеха, ответ должен быть примерно таким:
label: Russian Trusted Root CA
label: Russian Trusted Sub CA
Запустите в терминале команду конвертации:
openssl x509 -outform der -in russiantrustedca.pem -out russiantrustedca.crt
Добавьте сертификат в хранилище доверенных сертификатов. Для этого от имени суперпользователя запустите команду
cp
, скопируйте файл с сертификатом в директорию/etc/pki/ca-trust/source/anchors/
:sudo cp <path>/russiantrustedca.crt /etc/pki/ca-trust/source/anchors/
Для обновления хранилища доверенных сертификатов от имени суперпользователя запустите команду
update-ca-trust
:sudo update-ca-trust
Запустите в терминале команду конвертации:
openssl x509 -outform der -in russiantrustedca.pem -out russiantrustedca.crt
Добавьте сертификат в хранилище доверенных сертификатов. Для этого от имени суперпользователя запустите команду
cp
, скопируйте файл с сертификатом в директорию/etc/ca-certificates/trust-source/anchors/
:sudo cp <path>/russiantrustedca.crt /etc/ca-certificates/trust-source/anchors/
Для обновления хранилища доверенных сертификатов от имени суперпользователя запустите команду
update-ca-trust
:sudo update-ca-trust
Установка сертификатов для соединений gRPC
Для обмена сообщениями нужно использовать сертификаты НУЦ Минцифры.
Для установки сертификатов:
Скачайте подходящие сертификаты с портала Госуслуг.
Укажите путь к сертификату в переменной среды GRPC_DEFAULT_SSL_ROOTS_FILE_PATH:
export GRPC_DEFAULT_SSL_ROOTS_FILE_PATH="/путь-к-сертификату/cert.pem"