如何更改/调整Python 3.10请求的默认SSL设置-sslv 3警报握手失败

2w3rbyxf  于 2023-06-06  发布在  Python
关注(0)|答案(2)|浏览(597)

问题:

Python 3.10 increased the default security settings of the TLS stack太棒了我有一个遗留的应用程序运行的东西,这些设置不喜欢。我不知 prop 体是什么。如何调整这些设置让我的请求通过?

故事:

我正在编写一个小脚本,从本地运行的Jazz RTC示例中提取一些信息。它显然有一个... SSL证书有问题。没有什么是“verify=False”不能解决的。好吧,它没有。当我在Python 3.10中运行以下代码时...

if __name__ == '__main__':

    headers = {'Content-Type': 'application/x-www-form-urlencoded'}

    data = {
        'j_username': username,
        'j_password': password
    }

    result = requests.post(url, data=data, headers=headers, verify=False).json

    print(result)

...我得到这个握手错误。

requests.exceptions.SSLError: HTTPSConnectionPool(host='...', port=...): Max retries exceeded with url: /ccm/authenticated/j_security_check (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:997)'))

但是,它在Python 3.9上工作没有问题。四处寻找答案,我发现了python 3.10中增加的增强安全默认值,like this question...但没有关于如何调整他们,使这与我的要求工作。

详情:

This is what the browser developer tools report

  • 通常,这是一个非常有限的企业环境。我做不了什么。没有管理员权限。
  • 正如所料,负责该主机的部门表示无法修复,并给出了一些肤浅的借口。
  • “如果它在3.9上工作,为什么不使用它?“嗯,有几个原因。主要的版本是3.10,是公司环境中接受使用的版本。如果他们发现我偷偷带了一台康达3.9的venv去测试东西,我会受到严厉的教训。

任何帮助是赞赏!o/

qojgxg4l

qojgxg4l1#

@PatrickMevzek的评论让我产生了其他疑问和this question
它向我展示了如何更改使用的密码和安全级别。以下来自@bgoeman的代码片段适用于我的环境:

import urllib3
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'ALL:@SECLEVEL=1'

显然,一般情况下不应使用此选项。这将允许中间人攻击和其他令人讨厌的事情。在更改这些设置时要小心和注意。

yc0p9oo0

yc0p9oo02#

通过降级请求和URlib3版本解决了该问题。默认情况下,请求2.31版本安装导致此问题,在unistalling此版本并使用pip install request==2.24.0解决问题后。

相关问题