在 Rust 中编译一个包含网络请求(特别是 HTTPS)的项目时,例如使用 reqwest 库。reqwest 库使用native-tls作为默认的 TLS 后端,native-tls是一个适配器,它会链接到操作系统原生的 TLS 库,在 Linux 上通常是 OpenSSL

解决方案

方案一:使用rustls

rustls是一个纯 Rust 实现的现在 TLS 库,它的最大优点是没有任何 C 代码依赖

修改依赖:

修改Cargo.toml文件中reqwest的特性,禁用默认特性,并且启用rustls-tls特性。

[dependencies]
# --snip--
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }

方案二:编译 OpenSSL

通过openssl-sysvendored特性来实现。这个特性会让openssl-sys在编译时自动下载OpenSSL的源码并且静态编译它。

[dependencies]
# --snip--
reqwest = { version = "0.12" } 
openssl = {version = "0.10", features = ["vendored"]}
最后修改:2025 年 12 月 12 日
如果觉得我的文章对你有用,请随意赞赏