Acme,改变互联网的协议之一的简史

发布: (2025年12月4日 GMT+8 07:28)
9 min read

Source: Hacker News

前言

我想与大家分享这篇我写的关于 ACME 协议的文章,我大约十年前“爱上了”它。这对我而言是回馈这个奇妙的自由软件和开放协议开发者社区的一种方式。

本文讲述了 ACME 协议的起源、构思、标准化、与生态系统的关系以及它所面临的演进挑战。

在撰写本文时,我有幸采访了几位参与 ACME 创建和演进的人士: Aaron GableSarah GranJacob Hoffman‑AndrewsJ.C. Jones(更多信息见下文)。

非常感谢大家抽出时间并提供支持!💚

互联网与网络协议

开放且标准化的协议是互联网成功的核心

在 1990 年代,计算机领域经历了一场真正的革命,推动力来自互联网的兴起与全球普及。互联网实现了 Sun Microsystems 口号“The Network is the Computer” 所承诺的愿景。

通过互联各个计算机,互联网让用户能够无限制、跨越国界地进行交流。

这种不受限制的互联恰逢现代史的关键时刻:西方与以苏联为首的东方集团的对立——虽然我们现在知道这只是暂时的——已经淡化,中国正成为世界工厂,而人与人之间的流动与协作比以往任何时候都更加自由开放。

互联网支撑了一种前所未有的即时通信与共享的乌托邦。这种乌托邦的实现依赖于一套开放且标准化的协议,正是它们让各种不同系统能够无缝协作与通信。

当然,也曾有制造商或软件厂商试图走孤立或垄断的道路。但开放且标准化的协议最终占据上风,促成了空前的扩张。基于 IP、TCP、UDP、DNS 等协议之上,HTTP 与 HTML 的组合推动了 Web 成为未来 30 年互联网首选的通信平台。

加密使用受限

这种通信乌托邦的成功是在几乎不关注身份验证、完整性和机密性保障的情况下实现的。

2015 年,只有约 40% 的网站使用了加密。对安全风险的疏忽导致的后果在 2013 年爱德华·斯诺登的泄密中得到了证实:我们的数据随时可能被任何能够拦截并收集它的人获取。

Let’s Encrypt 的出现

当被问及阻碍加密广泛采用的主要障碍时,Let’s Encrypt 的架构师之一、现任站点可靠性工程师、曾领导 Firefox 加密团队的 J.C. Jones 如是回答:

“越来越多的信息在网络上流动,而大多数传输的数据并未得到 TLS 的完整性或机密性保护。使用 TLS 的最大绊脚石是获取和管理服务器端证书,于是出现了 Let’s Encrypt。” – J.C. Jones

获取证书是主要障碍,这也是当务之急。

这一观点得到了一个合作伙伴团队的认同:他们从 2013 年起汇聚资源,成立了 Let’s Encrypt——一个自动化且免费的证书颁发机构。Let’s Encrypt 的副总裁 Sarah Gran 说:

“早期的合作伙伴包括来自 Mozilla、Electronic Frontier Foundation、Akamai、Cisco 以及密歇根大学的人员。” – Sarah Gran

于是 Let’s Encrypt 诞生了。

在 Web 生态系统中,证书颁发机构是指在你证明对域名拥有控制权后,能够为该域名签发证书的组织。

自 2015 年起,Let’s Encrypt 作为一家证书颁发机构,提供免费(即免费啤酒)的 TLS 服务器证书。在法律/行政层面,Let’s Encrypt 为公众利益服务,由加州公益公司 Internet Security Research Group (ISRG) 提供。

关于 Let’s Encrypt 成立十年后的成果,数据相当惊人(超过 7 亿活跃证书,占所有公共 TLS 服务器证书的 60%)。正如 Sarah Gran 所指出的,全球 HTTPS 使用率也大幅提升:

“我们开始发放证书时,只有约 39% 的网站访问使用 HTTPS。如今,美国已接近 95%,全球超过 83%。我们仍有工作要做,但对过去十年的进展感到自豪。” – Sarah Gran

Let’s Encrypt 通过 ACME 协议以自动化方式交付证书,这意味着站点所有者和证书颁发机构都无需手动操作。下面我们来聊聊自动化的细节!

自动化:运营的核心

从 2020 年代中期的视角来看,Let’s Encrypt 核心的自动化似乎理所当然,但在 2010 年代前半期,这远非标准。公共证书颁发机构发行服务器证书的生态系统同样如此。

乍一看,自动化似乎是帮助网站管理员可靠部署 TLS 的工具,但它首先是 Let’s Encrypt 项目能够生存的绝对前提。

正如 Let’s Encrypt 核心软件 Boulder 的技术负责人 Aaron Gable 所言:

“自动化始终是 Let’s Encrypt 成功的关键。从一开始我们就知道,非营利组织的预算根本无法规模化手动验证。” – Aaron Gable

事实上,Let’s Encrypt 从一开始就以互联网规模运行,团队只有大约十五名工程师,甚至更少。对这支小团队而言,自动化是唯一可行的方式,以实现他们设定的宏大使命。

ACME

为 Let’s Encrypt 提供动力的开放且自动化的协议

当我们谈论 Let’s Encrypt 的自动化时,指的就是 ACME(Automated Certificate Management Environment)。

该协议允许客户端软件向兼容 ACME 的证书颁发机构证明自己对所请求证书的域名拥有控制权。

Sarah Gran 对一个关键点作了说明:

“Let’s Encrypt 工作的一个重要方面是我们验证的是对域名的控制,而不是所有权。” – Sarah Gran

控制权与所有权的区别是每个人都应牢记的细微差别。

控制权的证明过程涉及客户端响应由 ACME 兼容的证书颁发机构发出的挑战。挑战可以是 HTTP、DNS 或 TLS,取决于客户端的选择以及颁发机构的支持。完成挑战需要 ACME 客户端在标准化的 HTTP 路径、DNS 区域或 TLS 响应中放置由 ACME 服务器提供的值。这些操作全部涉及密码学。

ACME 的关键在于,客户端与 ACME 服务器之间的整个对话完全无需人工干预,从而实现证书的自动签发与部署。

Back to Blog

相关文章

阅读更多 »

Mozilla的最新困境

请提供您希望翻译的具体摘录或摘要文本,我才能为您进行简体中文翻译。

从开源维护者那里得到 NO

Forem 标志 https://media2.dev.to/dynamic/image/width=65,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%...