win python3 ssl certificate verify failed

2019-07-26 08:51:37 +08:00
 caoyufei
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\googleapiclient\http.py", line 164, in _retry_request
    resp, content = http.request(uri, method, *args, **kwargs)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\oauth2client\transport.py", line 175, in new_request
    redirections, connection_type)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\oauth2client\transport.py", line 282, in request
    connection_type=connection_type)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\httplib2\__init__.py", line 1926, in request
    cachekey,
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\httplib2\__init__.py", line 1595, in _request
    conn, request_uri, method, body, headers
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\httplib2\__init__.py", line 1501, in _conn_request
    conn.connect()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\httplib2\__init__.py", line 1291, in connect
    self.sock = self._context.wrap_socket(sock, server_hostname=self.host)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\ssl.py", line 407, in wrap_socket
    _context=self, _session=session)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\ssl.py", line 814, in __init__
    self.do_handshake()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\ssl.py", line 1068, in do_handshake
    self._sslobj.do_handshake()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)

在 mac 下运行没问题,在 Linux 服务器上也 ok

在 win 跑就上面错误,是缺了什么包?

2037 次点击
所在节点    Python
10 条回复
JasonEWNL
2019-07-26 09:05:39 +08:00
根据报错只能推测,有没有开抓包软件导致证书错误?(关键还是把自己程序部分的报错信息发出来,目前能看到的都是回溯到库的报错。)
caoyufei
2019-07-26 09:22:10 +08:00
@JasonEWNL 代码看上面,是 googleapiclient 包执行的
siebenundvierzig
2019-07-26 11:44:51 +08:00
试试在 requests.get()里添加关键字参数 verify=False
justfly
2019-07-26 11:49:59 +08:00
估计 win 上的环境有某种‘中间人’。

PS. 别听楼上的。
caoyufei
2019-07-26 14:21:48 +08:00
@siebenundvierzig 用的不是 requests
是 httplib2
siebenundvierzig
2019-07-26 16:02:34 +08:00
@caoyufei 不好意思,看错了。你试试手动添加证书信息行不,在你调用 http.request 之前先 http.add_certificate
主要还是自己看文档吧 https://httplib2.readthedocs.io/en/latest/libhttplib2.html#http-objects
aaronhua
2019-07-27 18:13:54 +08:00
有一个高危操作,可以试试。
import ssl
# 表示忽略未经核实的 ssl 证书认证
ssl._create_default_https_context = ssl._create_unverified_context
liamzz
2019-07-29 11:04:05 +08:00
遇到相同的问题,不过没报错就挂了
caoyufei
2019-07-29 15:08:39 +08:00
@aaronhua 试了不好使
joson1205
2019-07-30 17:41:45 +08:00
之前遇到过类似的问题,换了 py 版本莫名其妙的好了就没管他了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/586289

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX