Я запрашиваю 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 Azure Search Python распознавать мои корпоративные сертификаты в Docker или есть способ вызвать REST API поиска Azure напрямую с помощью aiohttp, чтобы обойти SDK?
Подробнее здесь: https://stackoverflow.com/questions/797 ... eb-ui-dock
Мобильная версия