使用TLS 1.2时出现Python SSL错误

时间:2015-11-12 16:03:02

标签: python ssl python-requests

我正在尝试使用Python 3.5中的reqests包连接到使用TLS 1.2的站点。在Chrome中,我收到警告,该网站的证书链包含至少一个使用SHA-1签名的证书。

我收到以下错误:

Traceback (most recent call last):

  File "<ipython-input-51-e43bc1030cea>", line 1, in <module>
    f = s.get(url)

  File "C:\Anaconda3\lib\site-packages\requests\sessions.py", line 480, in get
    return self.request('GET', url, **kwargs)

  File "C:\Anaconda3\lib\site-packages\requests\sessions.py", line 468, in request
    resp = self.send(prep, **send_kwargs)

  File "C:\Anaconda3\lib\site-packages\requests\sessions.py", line 576, in send
    r = adapter.send(request, **kwargs)

  File "C:\Anaconda3\lib\site-packages\requests\adapters.py", line 433, in send
    raise SSLError(e, request=request)

SSLError: EOF occurred in violation of protocol (_ssl.c:646)

要求版本为2.8.1,Python版本为Python 3.5.0 :: Anaconda 2.4.0(64位)

有谁知道如何解决这个问题或者遇到过类似的问题? 我已经尝试通过在this blog构成Requests包的贡献者之后强制TLS版本来连接到该站点,但我仍然得到sam错误。现在无法升级网站上的证书。

1 个答案:

答案 0 :(得分:0)

这可能不是证书的问题,因为python不强制执行sha-256。来自服务器的关闭表明服务器不喜欢客户端发送的内容,通常是TLS协议版本或客户端提供的密码集。一个常见的问题是没有密码重叠,因为服务器只想拥有像RC4-SHA这样的不安全密码,并且客户端不提供这些密码(在当前版本的请求中默认禁用RC4-SHA)。尝试Why does Python requests ignore the verify parameter?中的提示。