如何设置Python使用的信任存储';是httplib吗?

如何设置Python使用的信任存储';是httplib吗?,python,python-2.7,ssl,https,httplib,Python,Python 2.7,Ssl,Https,Httplib,默认情况下,Python的.HTTPSConnection使用系统的信任存储来验证HTTPS证书。(如何)是否可以设置不同的CA列表来进行验证,以替换默认的CA列表 我试图设置httplib使用的证书(见下文),但这只会添加给定文件中的证书;如果需要,它不会阻止验证器从系统存储区加载更多证书 c = ssl.SSLContext(ssl.PROTOCOL_TLSv1) c.load_verify_locations(cafile='mozillacerts.pem', capath=None)

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

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

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

conn = httplib.HTTPSConnection(domain, port, context=c)
需要明确的是:如果无法使用给定文件中的证书验证信任路径,我希望验证失败


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

Stefan,我确实看到您的尝试存在两个问题:您应该使用,而不是已经过时的TLSv1。不要被变量的名称所迷惑,请阅读链接文档以了解这是正确的使用值

您不需要覆盖默认证书存储,只需生成默认可识别的正确SSL证书即可

您可以从中获得免费的SSL证书--我可以向您保证,默认情况下,所有浏览器、Python和JAVA应用程序都可以识别这些证书


不需要使用证书存储,这是一种风险,取决于每个平台。不需要补充的是,它在小的更新中有很高的盈亏平衡变化。

因为这似乎不太可能,我们通过使用Python-“解决”了这个问题,因为它允许我们设置CA捆绑包

requests.get('https://' + domain, verify='mozillacerts.pem')

另请参见:

嗨,索林,谢谢你的回答!首先,谢谢你对协议常数的评论,我确实被它的名字误导了。其次,我知道让我们加密,但我需要模拟特定浏览器的行为,因此需要控制使用哪些CA。这与让一个站点I管理员进行验证没有任何关系。