【发布时间】:2017-06-07 05:18:43
【问题描述】:
我想确保在使用 requests 库发布到 HTTP 服务器时,它会拒绝使用 TLSv1 或 TLSv1.1 进行通信。为此,我将我的 https 服务器配置为强制 SSL 协议使用 TLSv1 或 TLSv1.1。我预计这些版本会被拒绝。
我的 python 程序在 CentOs 机器上运行:
cat /etc/centos-release
CentOS release 6.7 (Final)
默认的 Python 版本是 2.6.6:
which python
/usr/bin/python
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
我安装了python 2.7:
which python2.7
/usr/local/bin/python2.7
Python 2.7.6 (default, Jun 2 2017, 11:37:31)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux2
>>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 1.0.1e-fips 11 Feb 2013'
openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
使用 pip2.7,我安装了运行获取请求所需的库。我没有对 openssl 做任何更改。
我发送了两个测试警报,似乎我的程序协商到了 TLSv1。我的印象是 TLSv1 已被弃用。该程序使用 python 2.7 执行,而不是 python 2.6 的系统默认值。
在我嵌入的 python 程序的顶部: #!/usr/local/bin/python2.7
以下是显示 TLSv1.1 和 TLSv1 正在通过的 2 个帖子提醒:
"POST /testpost HTTP/1.1" 200 43 TLSv1.1/ECDHE-RSA-AES256-SHA "-" "python-requests/2.5.1 CPython/2.6.6 Linux/2.6.32-573.22.1.el6.x86_64" 0.006 <"{for: test purposes}"
"POST /testpost HTTP/1.1" 200 43 TLSv1/ECDHE-RSA-AES256-SHA "-" "python-requests/2.5.1 CPython/2.6.6 Linux/2.6.32-573.22.1.el6.x86_64" 0.006 <"{for: test purposes}"
有什么想法吗?
【问题讨论】:
-
谢谢,这是我怀疑但不清楚的。我已经阅读了您提到的那篇博客文章,它似乎仅限于一种协议。我希望有人能提供一份你可以接受的清单。
标签: python python-requests tls1.2 pyopenssl