Python 2.6中是否有TLS 1.1或TLS 1.2的库?

时间:2013-10-23 18:20:53

标签: python ssl python-2.6

我有一项任务是创建一个安全通信的套接字服务器和客户端。我必须使用TLS 1.1或1.2来避免BEAST攻击。我们给了Python 2.6版,但是它不支持TLS 1.1或1.2。

你们知道有没有在Python 2.6中实现的外部库,或者我最好使用增加支持的Python 3.4开发版本?

1 个答案:

答案 0 :(得分:3)

通过快速测试,如果您在OpenSSL 1.0.1之上构建pyOpenSSL,看起来您获得了TLSv1.1和1.2支持。它支持Python 2.6 + / 3.2 +。

API与库存ssl模块不同,但Connection对象与ssl.SSLSocket没有区别,因此移植很有可能只是一个简单的搜索 - 和-replace。

对于当前发布的版本0.13.1,存在隐式TLS 1.1和1.2支持,但无法明确请求或要求它们。您可以从客户端执行的最佳操作是设置SSLv23_METHOD添加OP_NO_SSLv2OP_NO_SSLv3选项,这样可以保证TLS 1.0,1.1或1.2。我还没有测试过你可以从服务器端做些什么。

使用中继代码(#1020632中的补丁已提交),有明确的1.1和1.2支持。从客户端,您可以使用TLSv1_1_METHOD仅获取TLSv1.1,TLSv1_2_METHOD仅获取TLSv1.2,并且可能(我尚未测试)SSLv23_METHOD {{1} },OP_NO_SSLv2OP_NO_SSLv3得到1.1或1.2。同样,我还没有测试过你可以从服务器端做些什么。

您应该可以OP_NO_TLSv1安装中继线;如果没有,请查看或下载当前的tarball并pip install bzr+lp:pyopenssl


我的猜测是,当使用正确构建的pyOpenSSL 0.13.1和OpenSSL 1.0.0或更高版本时,你可以编写总是得到1.2的代码,但是如果客户端或服务器环境是以某种方式构建的,可能会默默地使用更糟糕的东西这不符合这些要求,无法检测到问题。如果你希望连接失败而不是在这种情况下(你可能会这样做)回退,看起来你需要一个更新的pyOpenSSL。


这是我第一次测试一台大多数干净的OS X 10.8.5机器,安装了Homebrew和pip install

pip

这证明(假设ssltest.org是正确的)我们不仅声称支持TLS 1.1,而且还建立了1.2或1.1连接。