直接替换`urllib2.urlopen`进行证书验证

时间:2011-05-29 10:18:38

标签: python ssl https certificate

我使用Python的urllib2.urlopen与HTTPS服务器交谈,但我现在在documentation上了解到“HTTPS请求[使用urllib2.urlopen]不会对服务器的证书进行任何验证。 “

这对我来说是个大问题,因为它会让我的服务器对MITM攻击开放。

我希望直接替换urllib2.urlopen进行证书验证,因此我可以将其与我的代码捆绑在一起,并通过调用修改后的urllib2.urlopen替换所有对urlopen的调用功能

因为这是一个安全问题,所以我更喜欢经过实战检验的安全审核代码,而不是来自互联网的随机配方。

3 个答案:

答案 0 :(得分:2)

幸运的是,情况发生了变化。默认情况下,从Python 2.7.9 / 3.4.3启用证书验证。有关详细信息,请参阅https://www.python.org/dev/peps/pep-0476/

答案 1 :(得分:1)

看看http://pycurl.sourceforge.net/。它使用了libcurl,它肯定是成熟且经过充分测试的。

尽管如此,这并不是“下降”的替代品。 api是不同的。

编辑更好,在他的评论中查看@Sven链接的问题(也建议将pycurl作为选项)。

答案 2 :(得分:1)

您可能对this library感兴趣,虽然它不是替代品。它使用sslOpenSSL,具体取决于您使用的Python版本和httplib