如何设置 Python 的 httplib 使用的信任库?

Ste*_*fan 5 python ssl https httplib python-2.7

默认情况下,Python 的httplib .HTTPSConnection 使用系统的信任存储来验证 HTTPS 证书。(如何)是否可以设置不同的 CA 列表来进行验证,替换默认的 CA 列表?

我试图设置httplib 使用的SSLContext(见下文),但这只会添加给定文件中的证书;如果需要,它不会阻止验证器从系统存储中加载更多证书。

c = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
c.load_verify_locations(cafile='mozillacerts.pem', capath=None)

conn = httplib.HTTPSConnection(domain, port, context=c)
Run Code Online (Sandbox Code Playgroud)

要明确:如果无法使用给定文件中的证书验证信任路径,我希望验证失败。

(为此,我在 Debian 8 上使用 Python 2.7.11。)

Ste*_*fan 1

看来这实际上不可能,我们通过使用 Python- requests “解决”了这个问题,因为它允许我们设置 CA 捆绑包。

requests.get('https://' + domain, verify='mozillacerts.pem')
Run Code Online (Sandbox Code Playgroud)

另请参阅:请求文档:SSL 证书验证