Certbot 申请泛域名证书

在文章 Nginx 配置 SSL 中,笔者介绍了通过 Certbot 申请 SSL 证书并使 Nginx 支持 SSL 的方法。彼时申请泛域名证书(Wildcard certificate)比较麻烦,需要验证 TXT 记录,再加上 Certbot 用包管理器安装会有一些小问题,故没有继续尝试。

三年之后再回顾这个问题,发现 Certbot 已经可以完美地通过 pip 安装,申请证书的流程也得到了简化。

申请泛域名证书仍然要求验证你对域名的所有权,因此除了 Certbot,还需要安装对应的插件。本站的 DNS 托管服务商是 Cloudflare,本文也以 Cloudflare 为例。

首先,需要创建一个 Cloudflare 的 API 令牌,权限设置如下图所示

创建成功后,获得的 API 令牌需要妥善保存。随后,登录到申请 SSL 证书的服务器上,用 pip 安装 Certbot 和 certbot-dns-cloudflare 插件。

1
pip3 install certbot certbot-dns-cloudflare

然后执行以下命令,将 TOKEN 替换为此前获得的 API 令牌。

1
2
echo "dns_cloudflare_api_token=TOKEN" > /etc/cloudflare.ini
chmod 0600 /etc/cloudflare.ini

完成后,直接用 Certbot 申请证书即可。将 example.com 替换为你的邮箱和域名。

1
certbot certonly --email alex@example.com --dns-cloudflare --dns-cloudflare-credentials /etc/cloudflare.ini -d example.com,*.example.com

参考文章:Let's Encrypt 现已正式支持泛域名证书