【问题标题】:Overcoming SSL: CERTIFICATE_VERIFY_FAILED on Windows 10 when using urllib3克服 SSL:使用 urllib3 时 Windows 10 上的 CERTIFICATE_VERIFY_FAILED
【发布时间】:2019-05-24 04:16:02
【问题描述】:

这个简单的 Python 代码显示了 Ascii 艺术,取自以下 quora 回复:https://qr.ae/TWNB4S。我通过 python.org 的独立安装程序和 anaconda 套件在我的 Windows 10 笔记本电脑上安装了 Python 版本 3.7.3。该代码在通过 anaconda 启动的 Jupyter notebook 上运行良好。但是当我通过 pycharm IDE 运行相同的代码时,我得到了与 SSL 相关的错误。

我在网上搜索了此错误,但在我的 Windows 10 python 3.7.3 安装中找不到解决此问题的方法。但它在我的 Anaconda python 3.7.3 版本上运行良好。那么有没有办法克服这个错误? 代码:

import ascii
output =  ascii.loadFromUrl("https://i.dailymail.co.uk/i/pix/2015/09/01/18/2BE1F43200000578-0-image-a-17_1441127603656.jpg")
print(output)

通过 Pycharm IDE 运行上述代码时的错误:

Traceback (most recent call last):
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 603, in urlopen
    chunked=chunked)
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 344, in _make_request
    self._validate_conn(conn)
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 843, in _validate_conn
    conn.connect()
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 350, in connect
    ssl_context=context)
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\ssl_.py", line 355, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 412, in wrap_socket
    session=session
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 853, in _create
    self.do_handshake()
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 1117, in do_handshake
    self._sslobj.do_handshake()
***ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)***

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/billn/Google Drive/Books/UDEMY - Complete Python 3 Bootcamp - Jose Portilla/gg.py", line 3, in <module>
    output = ascii.loadFromUrl("https://i.dailymail.co.uk/i/pix/2015/09/01/18/2BE1F43200000578-0-image-a-17_1441127603656.jpg")
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\ascii\__init__.py", line 17, in loadFromUrl
    fd = http.request('GET', URL)
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\request.py", line 68, in request
    **urlopen_kw)
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\request.py", line 89, in request_encode_url
    return self.urlopen(method, url, **extra_kw)
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\poolmanager.py", line 326, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 670, in urlopen
    **response_kw)
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 670, in urlopen
    **response_kw)
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 670, in urlopen
    **response_kw)
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 641, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "C:\Users\billn\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\retry.py", line 399, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='i.dailymail.co.uk', port=443): Max retries exceeded with url: /i/pix/2015/09/01/18/2BE1F43200000578-0-image-a-17_1441127603656.jpg (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)')))

【问题讨论】:

    标签: python python-3.x ssl-certificate urllib3


    【解决方案1】:

    如果您还没有安装,可以尝试从 pip 安装 certifi 包。否则,有许多解决方案 here,其中一些涉及如何确保您已安装证书,而另一些则显示如何禁用证书验证。

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 1970-01-01
      • 2020-12-07
      • 2019-02-04
      相关资源
      最近更新 更多