默认情况下,Python的https://www.sqlite.org/android/brlist。HTTPSConnection使用系统的信任存储来验证HTTPS证书。 (如何)可以设置不同的CA列表来进行验证,替换默认值?
我尝试设置httplib使用的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。)
答案 0 :(得分:0)
由于这似乎不太可能,我们通过使用Python'requests解决了这个问题,因为它允许我们设置CA包。
requests.get('https://' + domain, verify='mozillacerts.pem')
答案 1 :(得分:-1)
Stefan,我确实看到了你尝试的两个问题:你应该使用ssl.PROTOCOL_SSLv23
而不是已经过时的TLSv1。不要被变量名称混淆,请阅读链接文档以了解正确使用的值。
您不需要覆盖默认的证书存储区,而只需生成默认识别的正确SSL证书。
您可以从https://letsencrypt.org获得免费的SSL证书 - 我可以向您保证,所有浏览器,Python和JAVA应用程序都默认识别它们。
无需使用证书商店,这是有风险的,取决于每个平台。不要补充说,即使是在较小的更新中,它也有很大的突破性变化。