从版本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的“ 信任数据库” 部分讨论了这两种方法的优缺点。