python中的握手失败(_ssl.c:590)

时间:2015-11-18 11:10:21

标签: python ssl-certificate urllib2 pycurl sslhandshakeexception

当我执行以下行时,

req = urllib2.Request(requestwithtoken) 
self.response = urllib2.urlopen(req,self.request).read()

我收到以下异常:

SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)

问题是我可以通过使用curl ping服务来获取令牌。 在检索令牌的过程中,所有证书都已经过验证。 反过来,通过使用生成的令牌,我无法连接到该服务。 我在尝试时遇到上述错误。 可能是什么原因?

2 个答案:

答案 0 :(得分:12)

我遇到了同样的问题。这可能是因为您的远程服务器请求urllib2不支持的密码。我认为有两种可能的解决方案:

  1. Enable your specific cipher in urllib。我们您也可以启用all ciphers supported(请参阅页面底部),而是检查您使用curl中的哪一个,如上面的链接所示。

  2. 使用以下代码安装requests额外的安全包:pip install requests[security]。在requests issue on github

  3. 中对此进行了进一步讨论

    我做了第二个选项,它对我有用。

答案 1 :(得分:-1)

我也有同样的问题。检查您正在使用的请求的版本。

import requests
print requests.__version__

如果版本是2.18.4,则应尝试降级到版本2.11.1。我这样做了,它解决了我的问题。 为此,请在终端

中发出以下命令
pip uninstall requests
pip install requests==2.11.1 

希望这有帮助。