如何修复仅在 Pycharm 中抛出的“SSL: CERTIFICATE_VERIFY_FAILED”错误?

问题描述 投票:0回答:1

当使用 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 python-3.x pycharm ssl-certificate
1个回答
0
投票

假设您运行的是 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() 可以传递给 上下文参数。

© www.soinside.com 2019 - 2024. All rights reserved.