【发布时间】: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