使用 certbot 生成Let’s Encrypt通配符SSL证书

当我们有多个二级域名都需要启用 SSL 证书的时候,如果一个一个的进行证书的设置与管理是比较费时间精力的事情,还好有通配符证书。通配符证书能支持譬如 *.iconben.com 这样的多个二级域名,十分方便。

Let’s Encrypt 从2018-03-13起开始支持通配符证书。因此这给了我们免费实现系列站二级域名共用同一个证书的机会。因我们的域名解析托管在 DNSPod,以下简要说明如何使用客户端 certbot 工具,配合 certbot-dns-dnspod 插件,对于托管在 DNSPod 的域名生成通配符证书。

生成证书

安装 Certbot,选择相应的 Web Server 和操作系统,按照说明安装 Certbot。

然后通过 DNS 验证的方式生成证书:可以安装 Certbot’s DNS plugins。手动和自动都可以生成 SSL 证书,因通配符的证书有效期也是3个月,使用插件自动生成的话续期十分方便。

因本站域名解析使用的是DNSPod,可以使用 certbot-dns-dnspod,使用 pip 安装,如 pip3 install certbot-dns-dnspod。

针对那些没有在列表中DNS服务商,可以去自行搜索相关插件。

安装完成后,还需要登录到 DNSPod控制台 生成API Token,并保存在配置文件/path/credential.ini中。注意 DNSPod 已经启用了 V3 版 API,但我们这里使用的是 V2 版。配置文件中需要有 email 参数,必须是 DNSPod 账号的登录邮箱,api_token 参数,必须是双引号括起来的 “ID,Token”的形式,例子如下:

dns_dnspod_email = someone@example.com
dns_dnspod_api_token = "12345,c54cd52eae137f765af143d1dfader3434"

接下来运行命令行:

sudo certbot certonly -a dns-dnspod --dns-dnspod-credentials /path/credentials.ini -d example.com -d "*.example.com" 

# -a:指定使用的插件
# --dns-dnspod-credentials :指定 dnspod 使用的 含 email 和 api_token 的配置文件
# -d:指定要生成证书的域名

其他DNS plugins的使用也是类似的。

运行命令后,根据向导输入邮箱,同意条款,选择是否与 EFF 共享个人邮箱信息,然后 DNS plugin 创建 DNS TXT 记录,进行域名验证,然后生成 SSL 证书,然后删除 DNS TXT记录。最后提示证书生成成功!

作者: Ben

IT、电商、零售、医药行业混迹多年的理想主义者。