我正在尝试通过HTTPS隧道发送HTTPS请求,也就是说我的代理服务器要求使用HTTPS进行CONNECT,并且需要客户端证书。
我正在使用Requests的代理功能。
import requests
url = "https://some.external.com/endpoint"
with requests.Session() as session:
response = session.get(
url,
proxies={"https": "https://proxy.host:4443"},
# client certificates expected by proxy
cert=(cert_path, key_path),
verify="/home/savior/proxy-ca-bundle.pem",
)
with response:
...
这个方法能够起作用,但有一些局限性:
- 我只能为与代理的TLS连接设置客户端证书,而不能为外部终端点设置。
proxy-ca-bundle.pem
仅验证与代理的TLS连接中的服务器证书。来自外部终端点的服务器证书似乎被忽略了。
是否有任何方法可以使用requests
解决这两个问题?我想为外部终端点设置不同的CA集合。
我还尝试使用http.client
和HTTPSConnection.set_tunnel
,但据我所知,它的隧道是通过HTTP完成的,而我需要HTTPS。