泛域名 cerbot 版本号要求,及具体的实施步骤
申请 Let's Encrypt 泛域名证书(Wildcard Certificate)需要满足特定的要求
使用条件
从 Certbot 0.22.0 开始支持 Let's Encrypt 泛域名证书。
ACME 协议版本: 必须使用 ACME v2 接口
必须使用 DNS-01 验证(即通过配置 DNS 的 TXT 记录来证明你对该域名的所有权)
具体步骤
DNS-01 验证
手动模式需要你手动登录域名解析后台(如阿里云、腾讯云、Cloudflare 等)去添加 TXT 记录。
DNS-01 验证工作原理
泛域名(*.example.com)包含无限种可能,可以是 a.example.com、b.example.com 甚至是 secret.payment.example.com。
Let's Encrypt 没办法知道你未来会用哪个子域名。
它也没办法去访问一个还不存在的子域名的服务器。
所以,唯一能证明你彻底拥有整个域名控制权的方法,是看你能不能控制这个域名的 DNS 解析服务器。
cerbot 申请 *.example.com 的证书,得到txt-token-value-123456
登录到你的域名解析商Cloudflare,添加 TXT 记录。记录的名字固定叫 _acme-challenge.example.com,内容就是那串txt-token-value-123456
验证(Validation):cerbot查询_acme-challenge.example.com dns 记录,核对内容是否为txt-token-value-123456
泛域名证书颁发
step 1.
sudo certbot certonly \
--manual \
--preferred-challenges=dns \
--email [email protected] \
--agree-tos \
-d "example.com" \
-d "*.example.com"注:
-d "example.com" 和 -d "*.example.com" 建议同时加上。这样申请出来的证书既能保护根域名,也能保护所有二级子域名
step 2.
执行命令后,Certbot 会暂停,并输出类似以下的一段提示:
Please deploy a DNS TXT record under the name:
_acme-challenge.example.com
with the following value:
txt-token-value-abcdefg123456
Before continuing, verify the TXT record has been deployed.
Press Enter to Continue此时不要敲回车键!
step 3.配置 DNS 解析
登录你的域名托管后台。
添加一条新的解析记录:
记录类型: TXT
主机记录(Host): _acme-challenge (注意:有些平台会自动拼接后缀,填写后确保完整名称是 _acme-challenge.example.com)
记录值(Value): 填入 Certbot 屏幕上显示的那串随机字符串(例如 txt-token-value-abcdefg123456)
TTL: 建议设为最小值(如 60 秒或 120 秒),方便快速生效。
step 4. 检查DNS 记录是否已生效
新开一个本地终端,使用 dig 或 nslookup 工具确认 DNS 记录已在全球生效:
dig +short TXT _acme-challenge.example.com
# 或者
nslookup -q=txt _acme-challenge.example.comstep 5.验证完成
回到刚才的 Certbot 窗口,按下回车(Enter)。 如果验证成功,证书将生成在 /etc/letsencrypt/live/example.com/ 目录下
证书位置与续期
成功后,你会得到 4 个核心文件,保存在 /etc/letsencrypt/live/yourdomain.com/:
fullchain.pem:证书主体(Nginx 配置中 ssl_certificate 填这个)
privkey.pem:证书私钥(Nginx 配置中 ssl_certificate_key 填这个)
