我们之前分享过 Les's Encrypt的使用教程。大多数 Let’s Encrypt 证书使用 HTTP 验证颁发,这样可以轻松地在单个服务器上安装证书。然而,HTTP 验证并不总是适合为负载均衡网站颁发证书,也不能用于通配符证书的颁发。
DNS 验证通过 DNS 记录来验证证书请求,而不是通过 HTTP 提供内容。这意味着可以为负载均衡器后的 Web 服务器集群,或无法直接通过互联网访问的系统颁发证书。使用 DNS 验证同样支持通配符证书。
acme-dns-certbot 工具可以将 Certbot 连接到第三方 DNS 服务器,当你请求证书时,通过 API 自动设置证书验证记录。这样,你无需将 Certbot 直接集成到 DNS 提供商账户中,也不需要授予它对完整 DNS 配置的无限制访问权限,从而提升了安全性。
委派 DNS 区域用于将证书验证记录的查找重定向到第三方 DNS 服务,因此一旦完成初始设置,你可以请求任意数量的证书,而无需执行任何手动验证。
acme-dns-certbot 的另一个主要优点是它可以为负载均衡器后面的服务器,或无法通过 HTTP 直接访问的单独服务器颁发证书。在这些情况下,除非你在每台服务器上设置验证文件,否则无法使用传统的 HTTP 证书验证。如果你需要为无法通过互联网访问的服务器(如内部系统或暂存环境)颁发证书,acme-dns-certbot 工具也非常实用。
在本教程中,你将使用 Certbot 的 acme-dns-certbot 钩子,通过 DNS 验证来颁发 Let’s Encrypt 证书。
准备工作
要完成本教程,你需要:
按照 Ubuntu 18.04 的初始服务器设置来配置 Ubuntu 18.04 服务器,包括一个具有 sudo 权限的非 root 用户。
你还需要一个可以获取 TLS 证书的域名,并有能力添加 DNS 记录。在本教程的示例中,我们将使用 your-domain 和 subdomain.your-domain,以及 *.your-domain 作为通配符证书。但是,如果需要,你可以