Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python/Requests:Requests.exceptions.SSLError:[SSL:SSLV3\u警报\u握手\u失败]_Python_Python 2.7_Ssl_Openssl_Python Requests - Fatal编程技术网

Python/Requests:Requests.exceptions.SSLError:[SSL:SSLV3\u警报\u握手\u失败]

Python/Requests:Requests.exceptions.SSLError:[SSL:SSLV3\u警报\u握手\u失败],python,python-2.7,ssl,openssl,python-requests,Python,Python 2.7,Ssl,Openssl,Python Requests,在使用MacOS X的Python中,尝试向网站发出POST请求,但我收到以下错误POST\u response=session.POST(POST\u url,data=POST\u payload,headers=POST\u headers): 回溯(最近一次呼叫最后一次): 文件“web_requests.py”,第424行,在 main() 文件“web_requests.py”,第340行,在main中 post\u response=session.post(post\u url,

在使用MacOS X的Python中,尝试向网站发出POST请求,但我收到以下错误
POST\u response=session.POST(POST\u url,data=POST\u payload,headers=POST\u headers)

回溯(最近一次呼叫最后一次):
文件“web_requests.py”,第424行,在
main()
文件“web_requests.py”,第340行,在main中
post\u response=session.post(post\u url,data=post\u负载,headers=post\u头)
文件“/Library/Python/2.7/site packages/requests/sessions.py”,第535行,在post中
return self.request('POST',url,data=data,json=json,**kwargs)
文件“/Library/Python/2.7/site packages/requests/sessions.py”,第488行,在request中
resp=自我发送(准备,**发送)
文件“/Library/Python/2.7/site packages/requests/sessions.py”,第609行,在send中
r=适配器.send(请求,**kwargs)
文件“/Library/Python/2.7/site packages/requests/adapters.py”,第497行,在send中
raise SSLError(e,请求=请求)
requests.exceptions.SSLError:[SSL:SSLV3\u ALERT\u HANDSHAKE\u FAILURE]SSLV3 ALERT HANDSHAKE FAILURE(\u SSL.c:590)
可能是什么问题

提前感谢您,我们一定会投票/接受您的回答

编辑


特定于Python中的POST请求

根据此站点的评论SSLLabs报告中的附加信息,它仅支持TLS 1.2:

TLS 1.2 Yes   
TLS 1.1 No   
TLS 1.0 No   
SSL 3   No 
根据评论中的另一个信息,OpenSSL版本为0.9.8:

。。OpenSSL 0.9.8zg 2015年7月14日

由于OpenSSL 0.9.8最多只支持TLS 1.0,尤其不支持TLS 1.2,因此客户端和服务器之间没有通用的TLS协议。因此,握手失败


解决此问题的方法是将Python使用的OpenSSL版本从非常旧的版本升级到至少OpenSSL 1.0.1。有关更多信息或用途,请参见示例,其中预装了许多模块,还包括当前版本的OpenSSL。

@OluwafemiSule它与我的特定question@OluwafemiSule不一样你说的“特定于POST请求”是什么意思?get请求不存在SSLError吗?此问题与此处的许多其他问题类似,但细节太少,无法真正了解问题的可能性。请提供URL、python的完整版本和使用的openssl库(
python-c'import ssl;print ssl.openssl\u version'
)。我猜问题是由MacOSX附带的非常旧的OpenSSL版本0.9.8造成的,它不支持现代密码和TLS协议版本,但这只是众多可能性之一。@SteffenUllrich
Python 2.7.10
OpenSSL 0.9.8zg 2015年7月14日
您介意展示如何在Python 2.7中更新openssel吗?尝试了以下内容,但迄今为止运气不佳。@JoKo:这里有很多帖子展示了如何在Python中更新OpenSSL(请参阅jww的评论),所以我不会再添加一篇。如果你想让它变得简单,就按照我的建议使用Anaconda Python。尝试了第一个答案(使用
sudo pip安装-升级pyOpenSSL
)并检查了Python版本,它已经更新到了最新版本,但当我这么做时:
导入ssl
打印ssl.OPENSSL\u版本
,它仍然是2015年7月14日的OpenSSL 0.9.8zg。您的原始问题回答正确(并应标记为正确)。2.询问在Python中更新OpenSSL是一个不应该在评论中提出的新问题。3.其他问题之后的任何问题都不应在这里讨论。4.为什么不按照建议安装Anaconda Python来避免麻烦呢?Anaconda只是一个模块包吗?
TLS 1.2 Yes   
TLS 1.1 No   
TLS 1.0 No   
SSL 3   No