Проверка сертификата Python TLS - PullRequest
0 голосов
/ 12 ноября 2018

Я использую 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

...