8 个版本 (4 个重大更改)

0.5.0 2024年3月17日
0.4.0 2023年9月5日
0.3.2 2023年5月12日
0.3.1 2021年11月16日
0.1.1 2021年7月10日

加密学 中排名 #374

每月下载量:24
用于 3 个 crate (2 个直接使用)

MIT 许可证

63KB
1.5K SLoC

Project Status: Active – The project has reached a stable, usable state and is being actively developed. Crates.io Released API docs MIT licensed

一个通用的异步 ACME crate。

主要目标是允许二进制文件选择使用哪个异步运行时和 TLS 库。

特性

您需要通过特性指定实际工作中使用的 crate。

特性标志 含义
use_tokio 使用 tokio 作为异步运行时
use_async_std 使用 async_std 作为异步运行时
use_rustls 使用 rustls 进行 HTTPS 并为其生成证书
hyper_rustls use_rustls+use_tokio GitHub Workflow Status
async_std_rustls use_rustls+use_async_std GitHub Workflow Status

如果没有指定任何内容,您将得到 未选择异步后端未选择加密后端。如果您将此 crate 用作库,请 重新导出 适当的功能。

动机

Rust 提供不同的异步运行时,在高级别上提供相同的功能:文件、套接字等的异步函数。

因此,如果您编写一个库并且需要一些基本功能(如 HTTP 客户端),有时您必须做出用户可能不喜欢的选择。例如:我编写了一个基于 hyper 的 web服务器,并想添加 ACME。我找到的一个 crate 做了我需要的事情,但使用了 async-h1 和 async-std。虽然这可以工作,但它确实增加了二进制文件的大小,并显著增加了我依赖的 crate 数量。

所以我写了这个。你可以指定要使用哪个后端。在Web服务器的情况下,使用 --features="hyper_rustls"(相同的依赖)而不是 --features="async_std_rustls" 可以减少81个crate并使二进制文件减小350kB。

[profile.release]
lto = "fat"
codegen-units = 1

示例

这些查询来自Let's Encrypt的测试端点的证书。为了使它们工作,你需要将电子邮件和域名从 example.com 更改为自己的。

  1. 使用rustls的Hyper服务器: cargo run --example hyper_rustls --features="hyper_rustls"
  2. 使用rustls的async-std服务器: cargo run --example async_rustls --features="async_std_rustls"

计划

  1. 添加native_tls
  2. 添加openssl证书生成

依赖

~5–20MB
~315K SLoC