#acme #https #tls #encryption #alpn #autocert #rustls

tide-acme

通过Let's Encrypt和ACME tls-alpn-01挑战,为Tide提供自动HTTPS证书

3个不稳定版本

0.2.0 2022年6月20日
0.2.0-beta.1 2022年5月24日
0.1.1 2021年4月19日
0.1.0 2021年3月21日

#1160 in HTTP服务器

每月下载量36次
3 工具包 中使用

MIT/Apache

11KB
56

tide-acme 帮助您使用自动证书通过Let's Encrypt和ACME tls-alpn-01挑战,使用Tide提供HTTPS服务。

文档

要使用 tide-acme,请使用 tide_rustls 正常设置Tide的HTTPS,但不要指定证书和密钥,而是调用 acme 方法来配置TLS监听器的自动证书。

use tide_acme::{AcmeConfig, TideRustlsExt};
use tide_acme::rustls_acme::caches::DirCache;

let mut app = tide::new();
app.at("/").get(|_| async { Ok("Hello TLS") });
app.listen(
    tide_rustls::TlsListener::build().addrs("0.0.0.0:443").acme(
        AcmeConfig::new(vec!["domain.example"])
            .contact_push("mailto:[email protected]")
            .cache(DirCache::new("/srv/example/tide-acme-cache-dir")),
    ),
)
.await?;

这将为域名 domain.example 获取证书,该域名必须是您的Tide服务器处理的HTTPS流量域名。

在首次启动时,您的服务器将通过Let's Encrypt注册证书。Let's Encrypt将通过 ACME tls-alpn-01挑战 验证您的服务器对域的控制权,该挑战将由 tide-acme 配置的TLS监听器响应。

您必须通过 AcmeConfig::cache 或其他缓存方法提供一个缓存。此缓存将在运行之间保持ACME账户密钥和已注册证书,以避免达到速率限制。您可以使用 rustls_acme::caches::DirCache 用于简单的文件系统缓存,或使用 rustls_acme 缓存特质实现自己的缓存。

默认情况下,tide-acme 将使用Let's Encrypt的测试环境,适用于测试目的;它产生由测试根签名的证书,这样您可以验证您的堆栈是否正常工作,但那些证书在浏览器或其他HTTPS客户端中不被信任。测试环境在测试期间具有更慷慨的速率限制。

当您准备好部署到生产环境时,可以通过调用 .directory_lets_encrypt(true) 切换到生产环境下的 Let's Encrypt 环境,该环境生成的证书在浏览器和其他 HTTPS 客户端中被信任。生产环境具有更严格的 速率限制

tide-acme 基于 tide-rustlsrustls-acme 构建。

依赖项

~22–34MB
~642K SLoC