如何解决 Rust Reqwest 错误:证书无效

问题描述 投票:0回答:1

快速提问,reqwest 是否允许自签名证书?我创建了一个启用 tls 的 rust-warp 网络服务器。我创建了一个 reqwest 客户端来向该服务器发出请求以进行测试。添加到 add_root_certificate 的证书与服务器正在使用的证书相同。这很奇怪,因为当我使用其他客户端(例如 Python 或 CURL)时,发出请求没有问题,并且我的服务器上没有收到 TLS 错误。

这是我的示例 Rust 代码:

let mut buf = Vec::new();
File::open("my_cert.pem")?
.read_to_end(&mut buf)?;
let cert = reqwest::Certificate::from_pem(&buf)?;
let client = reqwest::Client::builder()
.add_root_certificate(cert)
.build()?;

let mut map = HashMap::new();
map.insert("name", "John");

let res = client.post("https://IP:PORT/endpoint).json(&map).send().await?;

这是我的示例 Python 代码:

`

path_to_cert = "path/to/cert/my_cert.pem"
route = "https://IP:PORT/endpoint"
payload = {
"name": "John",
}
res = requests.post(url, data = json.dumps(payload), verify=path_to_cert)

不确定是什么原因导致此问题?任何帮助将不胜感激,谢谢!

我已经构建了一个 rust-warp 服务器,并将数据发布到它进行测试。我希望我的 rust 请求能够成功地将数据发布到我的服务器,但我的服务器日志:

收到 TLS 警报 AlertMessagePayload { 等级:致命, 描述:证书未知, }

rust https tls1.2 reqwest rust-warp
1个回答
0
投票

这是一个错误:https://github.com/seanmonstar/reqwest/issues/1260

您现在需要使用

rustls-tls
作为您的 tls 后端。

cargo.toml

[dependencies]
reqwest = { version = "0.11.24", features = ["blocking", "rustls-tls"] }

main.rs

let client = reqwest::blocking::ClientBuilder::new().add_root_certificate(ca_cert)
    .use_rustls_tls()
    .build()?;
© www.soinside.com 2019 - 2024. All rights reserved.