Ошибка проверки SSL-сертификата SDK Azure Search Python в открытом веб-интерфейсе (Docker) — работает в Windows JupyterPython

Программы на Python
Ответить
Anonymous
 Ошибка проверки SSL-сертификата SDK Azure Search Python в открытом веб-интерфейсе (Docker) — работает в Windows Jupyter

Сообщение Anonymous »

Проблема:
Я запрашиваю Azure AI Search из открытого веб-интерфейса (Docker в WSL Ubuntu 24). SDK azure-search-documents завершается сбоем из-за ошибок проверки сертификата SSL, но тот же код отлично работает в блокноте Windows Jupyter.
Ошибка:
[SSL: CERTIFICATE_VERIFY_FAILED] проверка сертификата не удалась: невозможно получить сертификат локального эмитента (_ssl.c:1016)
Среда:
Docker-контейнер в WSL Ubuntu 24
Python 3.11.13
Корпоративная сеть с пользовательскими сертификатами корневого центра сертификации и прокси-сервером Zscaler
Вызовы Azure OpenAI работают нормально из той же среды Docker с использованием aiohttp.
Код, который не работает:

Код: Выделить всё

from azure.search.documents import SearchClient
from azure.search.documents.models import VectorizableTextQuery
from azure.core.credentials import AzureKeyCredential

credential = AzureKeyCredential(api_key)
search_client = SearchClient(
endpoint="https://gherkinrag-search.search.windows.net",
credential=credential,
index_name="py-gherkin-idx",
> )

results = search_client.search(
search_text=None,
vector_queries=[VectorizableTextQuery(text=query, k_nearest_neighbors=5, fields="text_vector")],
select=["chunks"],
top=3,
> )
Что я пробовал:
Экспортировал корпоративные корневые сертификаты CA из Windows, преобразовал в PEM, добавил в /usr/local/share/ca-certificates/, запустил update-ca-certificates (подтверждено добавление).
Установил переменные среды: SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt, REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
Установлено: pip-system-certs, доверенное хранилище, python-certifi-win32
Попробован пользовательский транспорт с отключенной проверкой SSL:

Код: Выделить всё

from azure.core.pipeline.transport import RequestsTransport
import requests

session = requests.Session()
session.verify = False
transport = RequestsTransport(session=session)

search_client = SearchClient(endpoint, credential, index_name, transport=transport)
Ничто из этого не работает. SDK по-прежнему завершается с ошибкой SSL.
Вопрос: Как заставить SDK Azure Search Python распознавать мои корпоративные сертификаты в Docker или есть способ вызвать REST API поиска Azure напрямую с помощью aiohttp, чтобы обойти SDK?

Подробнее здесь: https://stackoverflow.com/questions/797 ... eb-ui-dock
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»