问题:
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/
2条答案
按热度按时间qojgxg4l1#
@PatrickMevzek的评论让我产生了其他疑问和this question。
它向我展示了如何更改使用的密码和安全级别。以下来自@bgoeman的代码片段适用于我的环境:
显然,一般情况下不应使用此选项。这将允许中间人攻击和其他令人讨厌的事情。在更改这些设置时要小心和注意。
yc0p9oo02#
通过降级请求和URlib3版本解决了该问题。默认情况下,请求2.31版本安装导致此问题,在unistalling此版本并使用pip install request==2.24.0解决问题后。