基于 DNS-01 验证的通配符 SSL 证书申请实战指南

作为一名长期与服务器打交道的技术博主,我深知 SSL 证书对于网站安全的重要性。特别是在需要保护多个子域名时,通配符 SSL 证书无疑是最经济高效的选择。今天,我将分享基于 DNS-01 验证方式的通配符证书申请全流程,这些都是我在实际部署中积累的宝贵经验。
准备工作与环境配置
在开始申请之前,我们需要确保环境准备就绪。我推荐使用 Let’s Encrypt 的免费证书,配合 Certbot 工具进行操作。首先安装必要的软件包:
# Ubuntu/Debian 系统
sudo apt update
sudo apt install certbot python3-certbot-dns-cloudflare
# CentOS/RHEL 系统
sudo yum install certbot python3-certbot-dns-cloudflare
这里我选择了 Cloudflare 的 DNS 插件,如果你使用其他 DNS 服务商,需要安装对应的插件。在实际操作中,我发现提前配置好 DNS API 凭证能大大简化流程。
配置 DNS API 凭证
为了让 Certbot 能够自动添加 DNS 记录,我们需要配置 API 凭证。以 Cloudflare 为例,创建凭证文件:
mkdir -p ~/.secrets/certbot
echo "dns_cloudflare_api_token = YOUR_API_TOKEN" > ~/.secrets/certbot/cloudflare.ini
chmod 600 ~/.secrets/certbot/cloudflare.ini
踩坑提示:务必设置正确的文件权限(600),否则 Certbot 会因为安全原因拒绝读取凭证文件。这个细节我在第一次部署时就忽略了,导致排查了很长时间。
执行证书申请命令
现在来到最关键的一步——执行证书申请。通配符证书需要使用 DNS-01 验证方式,命令如下:
sudo certbot certonly
--dns-cloudflare
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini
-d "*.yourdomain.com"
-d "yourdomain.com"
--preferred-challenges dns-01
这里我同时申请了通配符证书(*.yourdomain.com)和根域名证书(yourdomain.com),这样既能保护所有子域名,也能确保根域名的安全。
验证与故障排查
申请过程中,Certbot 会自动在 DNS 中添加 TXT 记录进行验证。如果遇到问题,我最常用的排查方法是:
# 手动验证 DNS 记录是否生效
dig -t TXT _acme-challenge.yourdomain.com
有时候 DNS 传播需要几分钟时间,耐心等待是关键。如果长时间不生效,检查 API 权限是否正确配置。
证书自动续期配置
Let’s Encrypt 证书有效期为 90 天,设置自动续期至关重要:
# 测试续期命令
sudo certbot renew --dry-run
# 设置定时任务
echo "0 12 * * * /usr/bin/certbot renew --quiet" | sudo tee -a /etc/crontab
我建议每月执行一次续期检查,这样即使某次续期失败,也有充足的时间进行手动处理。
实战经验总结
通过多次部署,我总结出几个重要经验:首先,一定要备份原始的证书和密钥文件;其次,在生产环境部署前,先在测试环境完整走一遍流程;最后,监控证书到期时间,设置多个提醒渠道。
DNS-01 验证方式虽然配置稍复杂,但一旦设置完成,后续的维护工作就变得十分轻松。特别是对于拥有大量子域名的场景,这种一次配置、长期受益的方式确实值得投入。


这个教程太实用了,收藏!