我最近承担了为容器化微服务架构设计概念验证的任务。在查看了许多不同的产品后,我决定使用Traefik。我已设法使SSL适用于部署的任何应用程序,并由子域标记为主机。
这不是问题所在。问题在于,我不了解Let's Encrypt如何获得颁发给它的证书。我唯一的请求和使用SSL证书的经验来自添加到ELB侦听器以进行SSL终止。
在该特定用例中,我创建了一个请求,该请求已发送到域名的域名注册商电子邮件中。我批准了该请求,并获得了在AWS上颁发的证书。为此,没有批准。是因为域名已经指向AWS名称空间和ELB?如果有人对此有任何见解,我将不胜感激。
答案 0 :(得分:3)
来自亚马逊证书管理器的证书("我创建了一个请求,该请求已发送到我的域的域名注册商电子邮件" )和Lets-Encrypt是域验证(DV)证书。
可以通过确认对请求证书的主机名的有效控制来颁发这些证书。在不验证域名(或子域名)控制权的情况下,不能颁发证书。
ACM使用电子邮件验证...邮件将发送给域名联系人(来自WHOIS)以及域名本身的多个联系人,要求授权。肯定响应允许CA假定证书请求由控制域的实体授权。
在此应用程序中,Lets-Encrypt可能使用基于文件的验证。该服务生成一个" nonce"文件 - 其内容对于任何其他目的而言根本没有意义/无用,但同时是不可预测和秘密的。该文件放置在服务指定的Web服务器上的唯一路径上,然后服务尝试通过Internet获取文件,可能来自多个未知/未记录/地理位置分散的源IP地址(以减少可能性恶意用户可以说服该服务该文件真正在该网站上)。如果找到nonce文件且其内容完好无损,则允许服务假定证书请求由控制域的实体授权。
某些服务(例如Gandi)还支持第三种域验证形式,您可以在其中获得用于在站点上创建特定DNS记录的nonce值。这种不可预测的记录的存在及其不可预测的内容允许服务得出证据请求由控制域的实体授权的结论。
域验证是网站证书的最低验证级别,与验证级别较高的证书不同,生成的证书本身不会识别颁发证书的实际组织,因为组织实际上未经过验证 - - 只控制域名。
如果域名的DNS记录中存在CAA记录,则相对较新的标准Certificate Authority Authorization DNS记录将阻止未明确列出的CA颁发证书。
更新:在2017-11-22,ACM announced它已经添加了通过DNS进行域验证的功能,这是"第三个"我上面提到的选项。在最初询问和回答问题时,ACM仅支持电子邮件验证。