Pytnon 3.73 (Windows, urllib3) ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] - PullRequest
1 голос
/ 13 мая 2019

После выполнения простого кода:

from urllib3 import ProxyManager

def GET(url):
    http = ProxyManager("https://91.208.39.70:8080")
    response = http.urlopen('GET', url)
    print(response.data)
    return ''


if __name__ == '__main__':
    result = GET("https://example.com")
    print(result)

У меня есть следующие ошибки:

Traceback (последний вызов был последним): Файл "F: \ Run \ Lprogr \ Phyton \ lib \ site-packages \ urllib3 \ connectionpool.py", строка 597, в урлопене self._prepare_proxy (Conn) Файл "F: \ Run \ Lprogr \ Phyton \ lib \ site-packages \ urllib3 \ connectionpool.py", строка 807, в _prepare_proxy conn.connect () Файл "F: \ Run \ Lprogr \ Phyton \ lib \ site-packages \ urllib3 \ connection.py", строка 350, в соединении ssl_context = контекст) Файл "F: \ Run \ Lprogr \ Phyton \ lib \ site-packages \ urllib3 \ util \ ssl_.py", строка 355, в ssl_wrap_socket вернуть context.wrap_socket (sock, имя_сервера = имя_сервера) Файл "F: \ Run \ Lprogr \ Phyton \ lib \ ssl.py", строка 412, в wrap_socket сессия = сессия Файл "F: \ Run \ Lprogr \ Phyton \ lib \ ssl.py", строка 853, в _create self.do_handshake () Файл "F: \ Run \ Lprogr \ Phyton \ lib \ ssl.py", строка 1117, в do_handshake self._sslobj.do_handshake () ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] проверка сертификата не удалась: самозаверяющий сертификат в цепочке сертификатов (_ssl.c: 1056)

Во время обработки вышеуказанного исключения произошло другое исключение:

Traceback (последний вызов был последним): Файл "F: /My/Documents/PycharmProjects/proxyTester/proxy.py", строка 17, в результат = GET ("https://example.com") Файл "F: /My/Documents/PycharmProjects/proxyTester/proxy.py", строка 11, в GET response = http.urlopen ('GET', url) Файл "F: \ Run \ Lprogr \ Phyton \ lib \ site-packages \ urllib3 \ poolmanager.py", строка 451, в урлопене return super (ProxyManager, self) .urlopen (метод, url, redirect = redirect, ** кВт) Файл "F: \ Run \ Lprogr \ Phyton \ lib \ site-packages \ urllib3 \ poolmanager.py", строка 326, в урлопене response = conn.urlopen (метод, u.request_uri, ** кВт) Файл "F: \ Run \ Lprogr \ Phyton \ lib \ site-packages \ urllib3 \ connectionpool.py", строка 670, в урлопене ** response_kw) Файл "F: \ Run \ Lprogr \ Phyton \ lib \ site-packages \ urllib3 \ connectionpool.py", строка 670, в урлопене ** response_kw) Файл "F: \ Run \ Lprogr \ Phyton \ lib \ site-packages \ urllib3 \ connectionpool.py", строка 670, в урлопене ** response_kw) Файл "F: \ Run \ Lprogr \ Phyton \ lib \ site-packages \ urllib3 \ connectionpool.py", строка 641, в urlopen _stacktrace = sys.exc_info () [2]) Файл "F: \ Run \ Lprogr \ Phyton \ lib \ site-packages \ urllib3 \ util \ retry.py", строка 399, в инкременте поднять MaxRetryError (_pool, url, error или ResponseError (причина)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool (host = 'example.com', port = 443): превышено максимальное количество повторов с url: / (вызвано SSLError (SSLCertVerificationError (1, 'сертификат SSL [CERTIFICATE_VERIFY_FAILED] не пройден: собственный сертификат не подписан: самозаверяющий сертификат) в цепочке сертификатов (_ssl.c: 1056) ')))

ОБНОВЛЕНИЕ: я не хочу игнорировать проверку сертификата.

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Наконец-то найдено решение.

A.Игнорирование проверки SSL:

http = ProxyManager("https://91.208.39.70:8080", cert_reqs=ssl.CERT_NONE)

B.Не игнорируя проверку SSL:

Я скачал CA Bundle из certifi , помещая в любую папку, например: f:\cert.И закодировано так:

http = ProxyManager("https://91.208.39.70:8080", cert_reqs='CERT_REQUIRED', ca_certs='f:/cert/certs.pem')

Дополнительная информация .

Если кто-нибудь знает другие рабочие решения, пожалуйста, предложите ...

0 голосов
/ 13 мая 2019

Сертификаты регистрируются для имени домена, а не для ip.Либо вы делаете запрос на имя домена , либо игнорируете проверку SSL (ср. здесь ), либо вы заменяете https на http(будет работать, только если сервер разрешит http-соединения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...