sudo certbot certonly --dns-01 --dns-providers 是使用DNS记录验证方式获取SSL证书的命令。
详细解释:
- 命令组成
-
sudo certbot certonly - 基础命令,获取证书但不自动安装
-
--dns-01 - 指定使用DNS记录验证方式
-
--dns-providers - 指定DNS服务提供商(如cloudflare、route53等)
- DNS验证原理
DNS验证是Let's Encrypt提供的一种域名控制权验证方式:
-
Certbot会生成一个特殊的验证值
-
您需要在域名的DNS记录中添加一条TXT记录
-
Let's Encrypt会检查该DNS记录是否存在且正确
-
验证通过后颁发证书
-
与HTTP验证的区别
-
HTTP验证 :需要在服务器上提供临时文件,适合有web服务器的场景
-
DNS验证 :通过DNS记录验证,适合无法直接访问服务器的场景
- 优势
-
不需要开放服务器端口
-
支持通配符证书(如 *.example.com )
-
适合无法直接访问的服务器环境
- 具体操作步骤
a.执行命令并指定DNS提供商,例如:
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/cloudflare.ini -d example.com -d *.example.com
b.根据提示在DNS管理界面添加TXT记录
c.等待DNS记录生效(通常需要几分钟)
d.Certbot验证通过后生成证书
- 支持的DNS提供商
常见的包括:
-
cloudflare
-
route53 (AWS)
-
google
-
azure
-
digitalocean
-
godaddy
- 适用场景
-
服务器在防火墙后面
-
需要通配符证书
-
没有运行web服务器
-
多服务器共享同一个域名
DNS验证是一种灵活的验证方式,特别适合复杂网络环境下的证书获取。