SSL 错误不安全旧版重新协商已禁用

新手上路,请多包涵

我正在运行 Python 代码,我必须在其中从 HTTPSConnectionPool(host=‘ssd.jpl.nasa.gov’, port=443) 获取一些数据。但是每次我尝试运行代码时,都会出现以下错误。我在 MAC OS 12.1

 raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='ssd.jpl.nasa.gov', port=443): Max retries exceeded with url: /api/horizons.api?format=text&EPHEM_TYPE=OBSERVER&QUANTITIES_[...]_ (Caused by SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] unsafe legacy renegotiation disabled (_ssl.c:997)')))

我真的不知道如何绕过这个问题..谢谢你的帮助!

原文由 Gianmarco Broilo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 5.4k
2 个回答

当使用 OpenSSL 3 连接到不支持它的服务器时会出现此错误。解决方法是降级python中的cryptography包:

在使用的环境中运行 pip install cryptography==36.0.2

来源: https ://github.com/scrapy/scrapy/issues/5491

编辑:请参阅 Hally Mallon 和 ahmkara 的答案以在不降级密码的情况下进行修复

原文由 Jeroen Vermunt 发布,翻译遵循 CC BY-SA 4.0 许可协议

严重免责声明:此答案仅用于教育和测试目的。它描述了如何通过 /etc/openssl.conf 为所有应用程序(和所有系统)轻松禁用 SSL 验证在受监管的实体中完成时,这可能会被视为安全漏洞和审计漏洞,可能构成终止您的理由并影响网络安全保险。

警告:启用遗留不安全重新协商时,SSL 连接将容易受到中间人前缀攻击,如 CVE-2009-3555 中所述。

https://bugs.launchpad.net/bugs/1963834https://bugs.launchpad.net/ubuntu/+source/gnutls28/+bug/1856428 的帮助下

请注意,不建议编辑系统的 openssl.conf,因为一旦 openssl 更新,您可能会丢失更改。

使用以下内容在任何目录中创建自定义 openssl.cnf 文件:

 openssl_conf = openssl_init

[openssl_init]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
Options = UnsafeLegacyRenegotiation

在运行你的程序之前,确保你的 OPENSSL_CONF 环境变量设置为你的自定义 openssl.cnf 像这样运行爬虫时的完整路径:

 OPENSSL_CONF=/path/to/custom/openssl.cnf python your_scraper.py

或者像这样:

 export OPENSSL_CONF=/path/to/custom/openssl.cnf
python your_scraper.py

或者,如果您使用的是 pipenv 或 systemd 或 docker,请将其放入您的 .env 文件中

OPENSSL_CONF=/path/to/custom/openssl.cnf

原文由 Jack Lee 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题