【问题标题】:How to fix 'requests.exceptions.SSLError'如何修复“requests.exceptions.SSLError”
【发布时间】:2019-04-14 21:33:40
【问题描述】:

我已经阅读了很多关于此的文章,但没有一篇对我有用。另外,我尝试了其他解决方案,但仍然卡住了。我有一个简单的代码:

import requests

requests.get('https://s1.wcy.wat.edu.pl/ed1/', verify=False)

将验证设置为 False 后,我仍然收到错误消息:

requests.exceptions.SSLError: HTTPSConnectionPool(host='s1.wcy.wat.edu.pl', port=443): Max retries exceeded with url: /ed1/ (Caused by SSLError(SSLError(1, '[SSL: UNSUPPORTED_PROTOCOL] unsupported protocol (_ssl.c:1056)')))

编辑:问题已解决。对于那些有同样问题的人。确保您的网站 TLS 版本是什么。就我而言,它是 1.0。然后你必须去 /etc/ssl 并编辑 openssl.cnf。在底部你有

[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=2

只需将 1.2 更改为 1.0。为我工作

【问题讨论】:

  • 如果您认为您的编辑是答案,请将其添加为答案并接受它,这样其他人会很容易找到它。谢谢。
  • 我想确认 1.2->1.0 也解决了我的问题。对于一些造成麻烦的单个目标域,您可以复制 openssl.cnf -> some.domain.cnf 并仅在 some.domain.cnf 中更改 1.2->1.0。
  • 为了避免使用系统范围的设置,您可以在 python 中设置自定义 SSL 上下文,并设置 context.minimum_version = ssl.TLSVersion.TLSv1,然后修复 context.options,瞧! (发生了一些魔法)。

标签: python-3.x python-requests


【解决方案1】:

我有同样的问题。通过将verify=False 更改为verify=ssl.CERT_NONE,我修复了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2016-11-26
    • 2019-01-12
    相关资源
    最近更新 更多