【问题标题】:Drop-in replacement for `urllib2.urlopen` that does cert verification用于进行证书验证的“urllib2.urlopen”的替代品
【发布时间】:2011-09-04 06:14:23
【问题描述】:

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

这对我来说是个大问题,因为它让我的服务器容易受到 MITM 攻击。

我想要一个直接替换 urllib2.urlopen 来进行证书验证,所以我可以将它与我的代码捆绑在一起,并将所有对 urllib2.urlopen 的调用替换为对修改后的 urlopen 函数的调用。

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

【问题讨论】:

标签: python ssl https certificate


【解决方案1】:

幸运的是,情况发生了变化。默认情况下,从 Python 2.7.9 / 3.4.3 开始启用证书验证。详情请见https://www.python.org/dev/peps/pep-0476/

【讨论】:

    【解决方案2】:

    看看http://pycurl.sourceforge.net/。它使用了成熟且经过良好测试的 libcurl。

    不过,它不是“直接”替代品。 api不一样。

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

    【讨论】:

      【解决方案3】:

      您可能对this library 感兴趣,尽管它不是直接替代品。它使用sslOpenSSL,具体取决于您使用的Python 版本,以及httplib

      【讨论】:

      • httpclient 看起来很棒。绝对值得一看
      猜你喜欢
      • 2013-10-16
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多