4个版本 (2个重大更改)
0.3.0 | 2024年6月25日 |
---|---|
0.2.0 | 2024年1月15日 |
0.1.1 | 2023年10月27日 |
0.1.0 | 2023年10月27日 |
#173 in HTTP服务器
25KB
168 行
trillium-acme可以帮助您通过自动证书、使用Let’s Encrypt和ACME tls-alpn-01挑战,在Trillium中使用HTTPS。
要使用trillium-acme
,创建一个AcmeConfig
来配置您想要的证书,然后调用trillium_acme::new
来创建一个Acceptor
和一个future。使用与服务器相同的stopper启动future,然后将Acceptor
传递到服务器配置
use trillium_acme::AcmeConfig;
use trillium_acme::rustls_acme::caches::DirCache;
let config = AcmeConfig::new(["domain.example"])
.contact_push("mailto:[email protected]")
.cache(DirCache::new("/srv/example/acme-cache-dir"));
let (acceptor, future) = trillium_acme::new(config);
let stopper = trillium_smol::Stopper::new();
let future = stopper.stop_future(future);
trillium_smol::spawn(async {
future.await;
});
trillium_smol::config()
.with_port(443)
.with_host("0.0.0.0")
.with_nodelay()
.with_acceptor(acceptor)
.with_stopper(stopper)
.run(|conn: trillium::Conn| async move {
conn.ok("Hello TLS!")
});
这将配置TLS堆栈以获取域domain.example
的证书,该域必须是Trillium服务器处理的HTTPS流量域。
在首次启动时,您的服务器将通过Let's Encrypt注册一个证书。Let's Encrypt将通过一个ACME tls-alpn-01挑战来验证您的服务器对域的控制,该挑战将由trillium-acme
配置的TLS监听器响应。
您必须通过AcmeConfig::cache
或其他缓存方法提供一个缓存。此缓存将在运行之间保持ACME账户密钥和已注册证书,以避免超出配额限制。您可以使用rustls_acme::caches::DirCache
进行简单的文件系统缓存,或使用rustls_acme
缓存特质实现自己的缓存。
默认情况下,trillium-acme
将使用Let's Encrypt的测试环境,这对于测试目的很合适;它产生由测试根签名的证书,以便您可以验证您的堆栈是否正常工作,但这些证书在浏览器或其他HTTPS客户端中不受信任。测试环境在测试期间有更慷慨的配额限制。
当您准备好部署到生产环境时,可以通过调用 .directory_lets_encrypt(true)
来切换到生产环境的Let's Encrypt环境,该环境生成的证书在浏览器和其他HTTPS客户端中被信任。生产环境具有更严格的速率限制。
trillium-acme
建立在 rustls-acme
库之上。
依赖关系
~24–44MB
~1M SLoC