从2.7.9 / 3.4.3版开始,Python 默认会尝试执行证书验证。
这在PEP 467中已提出,值得一读:https : //www.python.org/dev/peps/pep-0476/
所做的更改会影响所有相关的stdlib模块(urllib / urllib2,http,httplib)。
相关文件:
https://docs.python.org/2/library/httplib.html#httplib.HTTPSConnection
现在,此类默认情况下执行所有必要的证书和主机名检查。要恢复为先前未验证的行为,可以将ssl._create_unverified_context()传递给context参数。
https://docs.python.org/3/library/http.client.html#http.client.HTTPSConnection
在版本3.4.3中更改:现在,此类默认情况下执行所有必要的证书和主机名检查。要恢复为先前未验证的行为,可以将ssl._create_unverified_context()传递给context参数。
请注意,新的内置验证基于系统提供的证书数据库。与此相反,请求包附带了自己的证书捆绑包。PEP 476的“ 信任数据库”部分讨论了这两种方法的优缺点。