工作原理

以英语显示

查看丹麦语版本

以德语查看

以希腊语查看

查看西班牙语版本

以芬兰语查看

以法语查看

切换到希伯来语

以匈牙利语查看

以意大利语查看

以日语查看

以韩语查看

查看巴西葡萄牙语版本

以俄语查看

以僧伽罗语查看

以塞尔维亚语阅读

以瑞典语查看

以泰语查看

以乌克兰语查看

以越南语查看

阅读简体中文页面

使用正體中文閲讀本網頁。

最后更新时间:

Let's Encrypt 和 ACME 协议 的目标是使设置 HTTPS 服务器并让它自动获得浏览器信任的证书成为可能,而无需任何人工干预。这可以通过在 Web 服务器上运行证书管理代理来实现。

为了了解该技术的运作方式,让我们逐步了解使用支持 Let's Encrypt 的证书管理代理设置 https://example.com/ 的过程。

此过程包含两个步骤。首先,代理向 CA 证明 Web 服务器控制某个域名。然后,代理可以请求、续订和撤销该域名的证书。

域名验证

Let's Encrypt 通过公钥识别服务器管理员。代理软件首次与 Let's Encrypt 交互时,它会生成一对新的密钥,并向 Let's Encrypt CA 证明服务器控制一个或多个域名。这类似于传统 CA 过程,即创建帐户并将域名添加到该帐户。

为了启动此过程,代理会询问 Let's Encrypt CA 需要执行什么操作才能证明它控制 example.com。Let's Encrypt CA 将查看正在请求的域名,并发布一组或多组挑战。这些是代理可以用来证明它控制域名的不同方法。例如,CA 可能会让代理选择以下选项之一:

除了挑战之外,Let's Encrypt CA 还提供一个随机数,代理必须使用其私钥对随机数进行签名,以证明它控制着密钥对。

Requesting challenges to validate example.com

代理软件完成了一组提供的挑战。假设它能够完成上面提到的第二个任务:它在 http://example.com 站点上的指定路径上创建了一个文件。代理还使用其私钥对提供的随机数进行签名。一旦代理完成这些步骤,它就会通知 CA 它已准备好完成验证。

然后,CA 的工作是检查挑战是否已从 多个网络视角 得到满足。CA 验证随机数上的签名,并尝试从 Web 服务器下载文件,并确保它具有预期的内容。

Requesting authorization to act for example.com

如果随机数上的签名有效,并且挑战通过了验证,那么由公钥标识的代理被授权对 example.com 进行证书管理。我们将代理使用的密钥对称为 example.com 的“授权密钥对”。

证书颁发和撤销

一旦代理拥有授权密钥对,请求、续订和撤销证书就变得很简单——只需发送证书管理消息并使用授权密钥对对其进行签名即可。

为了获取域名的证书,代理会构建一个 PKCS#10 证书签名请求,要求 Let's Encrypt CA 为 example.com 颁发证书,并指定一个公钥。与往常一样,CSR 包含与 CSR 中的公钥相对应的私钥的签名。代理还使用 example.com 的授权密钥对整个 CSR 进行签名,以便 Let's Encrypt CA 知道它已获得授权。

当 Let's Encrypt CA 收到请求时,它会验证这两个签名。如果一切正常,它会为 example.com 颁发一个证书,该证书使用 CSR 中的公钥,并将其返回给代理。CA 还将向多个公共证书透明度 (CT) 日志提交该证书。有关详细信息,请参见 此处

Requesting a certificate for example.com

撤销的工作原理类似。代理使用授权用于 example.com 的密钥对对撤销请求进行签名,Let's Encrypt CA 会验证请求是否获得授权。如果是,它会在正常的撤销通道(即 OCSP)中发布撤销信息,以便像浏览器这样的依赖方可以知道它们不应该接受已撤销的证书。

Requesting revocation of a certificate for example.com