我如何让python httplib接受不受信任的证书?我在我的网络服务器上创建了一个蛇油/自签名证书,而我的python客户端无法连接,因为我使用的是不受信任的证书.
我宁愿在我的客户端代码中修复它,而不是让它在我的系统上受信任.
import httplib
def main():
conn = httplib.HTTPSConnection("127.0.0.1:443")
conn.request("HEAD","/")
res = conn.getresponse()
print res.status, res.reason
data = res.read()
print len(data)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
小智 44
我的一些脚本在更新计算机后停止工作.事实证明,这就是问题所在:https://docs.python.org/2/library/httplib.html#httplib.HTTPSConnection
版本2.7.9中已更改:已添加上下文.
此类现在默认执行所有必需的证书和主机名检查.要恢复到先前未验证的行为,可以将ssl._create_unverified_context()传递给context参数.
因此,如果您的Python版本> = 2.7.9(在我的情况下为2.7.10),您可能会遇到此问题.为了解决这个问题,我更新了我的电话:
httplib.HTTPSConnection(hostname, timeout=5, context=ssl._create_unverified_context())
Run Code Online (Sandbox Code Playgroud)
这可能是保留相同行为的最简单的更改.
从检查Python 2.7.14源代码,您可以设置一个环境变量
PYTHONHTTPSVERIFY=0
Run Code Online (Sandbox Code Playgroud)
这将导致默认情况下禁用证书验证(这将适用于程序的所有请求).
我认为这适用于2.7.12+ - 但它不适用于3.x.
参考.PEP 493:默认情况下验证HTTPS,但允许envvar覆盖它
__CODE__
| 归档时间: |
|
| 查看次数: |
19227 次 |
| 最近记录: |