Я использую Tus Py Client в среде Macos High Sierra, работающей на Python 3.6.6.Я пытаюсь сделать HTTPS-запрос к tusd-серверу.
Сервер tusd успешно работает за прокси-сервером nginx с подключением с разрывом SSL.Я могу успешно посетить конечную точку / files / в браузере через соединение SSL / TLS.
Я получаю ошибку SSL: CERTIFICATE_VERIFY_FAILED от Tus Py Client , когдасделать запрос на подключение.Глядя на исходный код, Tus Py Client использует библиотеку запросы для создания веб-запроса:
@_catch_requests_error
def create_url(self):
"""
Return upload url.
Makes request to tus server to create a new upload url for the required file upload.
"""
headers = self.headers
headers['upload-length'] = str(self.file_size)
headers['upload-metadata'] = ','.join(self.encode_metadata())
resp = requests.post(self.client.url, headers=headers)
url = resp.headers.get("location")
if url is None:
msg = 'Attempt to retrieve create file url with status {}'.format(resp.status_code)
raise TusCommunicationError(msg, resp.status_code, resp.content)
return urljoin(self.client.url, url)
Если я сделаю HTTPS-запрос к tusd-серверувручную из оболочки Python, указав корневой сертификат для параметра verify , я могу успешно подключиться:
import requests
resp=requests.get('https://test.example.com:1081/files',verify=<absolute path to cert file>)
Однако Tus Py Client не можеткажется, чтобы предложить это переопределение.
Я понимаю, что в Python 3.6+ теперь есть собственное внутреннее хранилище сертификатов, поэтому объясняется, почему доверенный сертификат в хранилище ключей macos игнорируется.
Затем я прочитал документацию для запросов библиотеки.Это предполагает использование переменной среды REQUESTS_CA_BUNDLE для указания доверенных ЦС.Действительно, после установки переменной среды с путем к корневому сертификату CA я смог сделать HTTPS-запрос, используя библиотеку Tus-Py-Client .
Я на правильном путис этим решением, или есть лучший способ?
С уважением
dcs3spp