当我们审视 Let's Encrypt 的整体安全态势时,最让我们担忧的一点是,有多少操作系统和网络基础设施是用 C 和 C++ 这样的不安全语言编写的。 CA 软件 本身是用内存安全的 Golang 编写的,但从我们的服务器操作系统到网络设备,缺乏内存安全 routinely 导致需要修补的漏洞。

为了 Let's Encrypt,也为了更广泛的互联网,我们在 2020 年启动了一个名为 Prossimo 的新项目。Prossimo 的目标是使互联网上一些最关键的软件基础设施变得内存安全。从那时起,我们投资了一系列软件组件,包括 Rustls TLS 库Hickory DNSRiver 反向代理sudo-rsLinux 内核的 Rust 支持 以及 ntpd-rs

Let's Encrypt 现在采取了一项长期酝酿的措施:我们部署了 ntpd-rs,这是 Prossimo 第一个进入 Let's Encrypt 基础设施的内存安全软件。

大多数操作系统使用网络时间协议 (NTP) 来准确地确定当前时间。跟踪时间对于操作系统来说是一项至关重要的任务,而且由于它涉及与互联网的交互,因此必须确保 NTP 实现是安全的。

2022 年 4 月,Prossimo 开始开发一个名为 ntpd-rs 的内存安全且总体上更安全的 NTP 实现。从那时起,该实现已经成熟,现在由 Project Pendulum 维护。2024 年 4 月,ntpd-rs 部署到了 Let's Encrypt 的预发布环境,截至目前,它已投入生产。

在接下来的几年里,我们计划继续用内存安全的替代方案替换 Let's Encrypt 基础设施中的 C 或 C++ 软件:用 Rustls 替换 OpenSSL 及其衍生产品,用 Hickory 替换我们的 DNS 软件,用 River 替换 Nginx,用 sudo-rs 替换 sudo。内存安全只是整体安全方程的一部分,但 它是重要的一部分,我们很高兴能够做出这些改进。

为了提供我们的服务,我们依靠来自用户和支持者社区的贡献。如果您的公司或组织想 赞助 Let's Encrypt,请发送电子邮件至 sponsor@letsencrypt.org。我们要求您在能力范围内进行 个人捐赠