使用 TLS 1.2 时出现 Python SSL 错误

标签 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 之后强制使用 TLS 版本来连接到站点形成了 Requests 包的贡献者之一,但我仍然遇到 sam 错误。现在无法在网站上升级证书。

最佳答案

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

关于使用 TLS 1.2 时出现 Python SSL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33675865/

相关文章:

python - 比较两个文本文件以找出差异并将其输出到新的文本文件

postgresql - 启动 postgresql 服务器时出错 - 蛇油键出错

ssl - 为什么 thunderbird 78 在与 IMAP 邮件服务器通话时会挂起?

ssl - 在对指向同一文件夹的多个网站使用 SSL 重定向时保留 URL

python - 在 Tensorflow 1.2 中恢复经过训练的模型

python - Buildozer 无法在 arm64/aarch64 CPU 上编译 libffi

Python 请求响应解码

python - 如何通过 Flask 请求文件属性获取 Python 字典

python - 使用 Python-Requests 库发布文本文件

python - MongoEngine 中的子查询