Mul*_*hes 14 python ssl request python-2.6 python-requests
我被困在使用Python 2.6,我需要使用TLS 1.2发送一个帖子请求.Python 2.6的requests
库是否支持TLS 1.2?如何确保/验证请求是通过TLS1.2而不是其他版本进行的?
样本请求是
r=requests.post(url,data=payload,verify=False)
Run Code Online (Sandbox Code Playgroud)
在论坛的某个地方,我开始知道我们需要编译pyOpenSSL
来支持这一点.有没有更简单的方法?
fra*_*ale 13
ssl
Python 2.6中的模块仅支持TLS 1.0.如果您不希望引入其他依赖项(例如您建议的pyOpenSSL),则需要升级到Python 2.7或3.x以获得对较新版本TLS的支持.
要强制TLS的特定版本中的Python 2.7.9或更高,构造一个SSLContext
与适当的PROTOCOL_*
恒定.然后,您可以将其与任何可以提供自己的API一起使用SSLContext
.
import ssl
import urllib2
ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
# set other SSLContext options you might need
response = urllib2.urlopen(url, context=ctx)
Run Code Online (Sandbox Code Playgroud)
要使用特定协议版本或更高版本(包括将来的版本),请使用ssl.PROTOCOL_SSLv23
然后禁用您不想使用的协议版本:
ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
# allow TLS 1.2 and later
ctx.options |= ssl.OP_NO_SSLv2
ctx.options |= ssl.OP_NO_SSLv3
ctx.options |= ssl.OP_NO_TLSv1
ctx.options |= ssl.OP_NO_TLSv1_1
Run Code Online (Sandbox Code Playgroud)
至于使用SSLContext
带有请求的自定义以强制使用特定协议版本,根据文档似乎没有办法执行此操作,请参阅文档中的以下示例.
归档时间: |
|
查看次数: |
23309 次 |
最近记录: |