当使用 Python3 解释器在 Pycharm 中发出 https 请求时,我收到错误:
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1056)
我倾向于认为这是我的 Pycharm 配置的问题,因为此问题仅在使用任何版本的 Python3 时出现在 Pycharm 中。该代码在使用 Python2.7 的 Pycharm 中运行良好,并且在命令行中运行 Python3 也运行良好。
通过 Pycharm,我尝试使用不同版本的 Python3 创建新的虚拟环境。所有这些都基于可以独立于 Pycharm 成功运行代码的解释器。
此错误最常见的解决方案是运行在
Install Certificates.command
处找到的 /Applications/Python 3.x/
,但运行此命令只能确认 certifi
包已经是最新的。
下面代码的最后一行抛出错误:
headers = {"authuser":username, "authpass":password}
conn = http.client.HTTPSConnection(url)
conn.request("POST",requestpath, headers)
假设您运行的是 Python 3.4.3 或更高版本,并且如果您可以不验证目标,则可以尝试禁用证书和主机名检查:
headers = {"authuser":user, "authpass":pass}
conn = http.client.HTTPSConnection(url, context=ssl._create_unverified_context())
conn.request("POST",requestpath, headers)
来自官方 Python3 文档:https://docs.python.org/3/library/http.client.html:
版本 3.4.3 中的更改:该类现在执行所有必要的操作 默认情况下检查证书和主机名。要恢复到以前的状态, 未经验证,行为 ssl._create_unverified_context() 可以传递给 上下文参数。