【问题标题】:Python SSL error when using TLS 1.2使用 TLS 1.2 时出现 Python SSL 错误
【发布时间】:2015-11-12 16:03:02
【问题描述】:

我正在尝试使用 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 错误。现在不能在网站上升级证书。

【问题讨论】:

    标签: python ssl python-requests


    【解决方案1】:

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

    【讨论】:

    • 感谢您的建议。我尝试了该解决方案,但仍然遇到相同的错误。卷曲虽然工作正常。我验证了该站点确实具有“使用 TLS_RSA_WITH_RC4_128_SHA 的 SSL 连接”
    • @datarup:调试 SSL 问题很困难,因为除了另一方关闭连接之外,通常不会获得太多信息。但是,如果它与 curl 一起使用,则可能会尝试进行数据包捕获并比较成功和失败连接的 SSL 握手。或者,如果该站点是公开的,您可以发布 URL,以便帮助您了解发生了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 2016-09-20
    相关资源
    最近更新 更多