Let's Encrypt with Traefik 如何在不请求域所有者电子邮件的情况下生成证书

How Does Let's Encrypt with Traefik Generate Certificate without Request to Domain Owner Email

我最近接受了为容器化微服务架构设计概念验证的任务。在查看了许多不同的产品后,我决定使用 Traefik。我已经设法让 SSL 适用于由主机的子域部署和标记的任何应用程序。

这不是问题所在。问题是我不了解 Let's Encrypt 如何获得颁发给它的证书的具体细节。我请求和使用 SSL 证书的唯一经验来自添加到 ELB 侦听器以终止 SSL。

在那个特定的用例中,我创建了一个请求,该请求被发送到我的域的域注册商电子邮件中。我批准了请求并获得了在 AWS 上颁发的证书。为此,没有批准。是因为域已经指向 AWS 名称空间和 ELB 了吗?如果有人对此有任何见解,我将不胜感激。

来自 Amazon Certificate Manager ("I created a request which was sent to the domain registrar email for my domain") 和 Lets-Encrypt 的证书是域验证 (DV) 证书。

可以通过确认对请求证书的主机名的有效控制来颁发这些证书。如果不验证对域名(或子域)的控制,则无法颁发证书。

ACM 使用电子邮件验证...消息被发送到域联系人(来自 WHOIS)和域名本身的几个联系人,请求授权。肯定的响应允许 CA 假定证书请求是由控制域的实体授权的。

Lets-Encrypt,在这个应用程序中,大概使用了基于文件的验证。该服务生成一个 "nonce" 文件——其内容基本上是 meaningless/useless 用于任何其他目的,但同时也是不可预测和保密的。该文件位于服务指定的 Web 服务器上的唯一路径中,然后该服务尝试通过 Internet 获取该文件,可能来自多个 unknown/undocumented/geographically-dispersed 源 IP 地址(以减少恶意用户可以说服服务该文件确实在网站上)。如果找到 nonce 文件并且其内容完好无损,这允许服务假定证书请求是由控制域的实体授权的。

一些服务(例如 Gandi)还支持第三种形式的域验证,在这种情况下,您会获得用于在站点创建特定 DNS 记录的随机数值。这种不可预测的记录及其不可预测的内容的存在使服务可以断定证书请求是由控制域的实体授权的。

域验证是网站证书的最低级别验证,与具有更高级别验证的证书不同,生成的证书本身并不能识别证书颁发给的实际组织,因为该组织实际上并不是已验证 -- 只有域的控制权是。

一个相对较新的标准,Certificate Authority Authorization 如果域的 DNS 记录中存在 CAA 记录,DNS 记录将阻止未具体列出的 CA 颁发证书。


更新:2017 年 11 月 22 日,ACM announced 添加了通过 DNS 进行域验证的功能,也就是我上面提到的 "third" 选项。在最初提出和回答问题时,ACM 仅支持电子邮件验证。