gpt4 book ai didi

Python 请求 : Passing multiple client certificates to session. 证书

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:17 25 4
gpt4 key购买 nike

我正在编写一个连接到使用 TLS v1.2 的外部 soap 服务的 Flask 应用程序。我使用的是 Python 2.7 和版本 2.18.1 中的请求库。

我联系了服务器所有者,他告诉我我需要在 TLS 连接中包含多个客户端证书。这是我在单独的 .pem 文件中拥有的 3 个证书链。 (root + 中间 + 我的客户证书)。如果我只想要最后一个,服务器不会让我进入。

我已经用 SoapUI 和 Wireshark 对此进行了测试,这是真的。只有当我提供整个 3 个证书链时,我才会收到回复。仅传递我的客户端证书时,我从服务器收到错误消息。

来自 requests documentation您可以将其阅读为客户端证书,您可以使用以下方式仅通过一个证书:

session = requests.session()
session.cert = ('/path/client_cert.pem', '/path/private_key.pem')
response = session.post(SERVICE_URL, data=XML_CONTENT, headers=HEADERS)

即使我的“client_cert.pem”文件是 3 个证书的 bundle (就像您在 session.verify 中使用 CA 证书所做的那样),我也会收到错误消息。我可以在 Wireshark 上看到只有第一个用于 TLS 连接。

有没有办法在 Python 的请求库中包含多个证书 TLS 连接?

也许我应该使用不同的库或覆盖其中的一些代码?

最佳答案

我知道了!

我安装了一些旧版库。

看来这个问题是fixed by requests library developers在 1.23 版中。我还必须更新 urllib3。

我当前的 requirements.txt 是:

requests==2.22.0
urllib3==1.25.2 # compatible with requests 2.22

为了遵循规范,一切都完美无缺。我检查了 Wireshark 上的 TLS 连接。来自“client_cert.pem”链的所有证书均已通过。

如果你以后遇到这样的问题记得检查你的requests和urllib3库版本是否兼容。

谢谢大家!

关于Python 请求 : Passing multiple client certificates to session. 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58286050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com