实战场景
目标:照着做就能跑通的完整示例。先
--dry-run演练,再正式执行。
场景 0:开始前检查
bash
# 域名是否解析到本机公网 IP
dig +short example.com
# 80 端口是否可从公网访问(HTTP-01 的前提)
sudo ss -tlnp | grep ':80'场景 1:Nginx 全自动 HTTPS(推荐入门)
bash
# 1. 确认 Nginx 已装、站点配置已写好(server_name 指向你的域名)
sudo nginx -t
# 2. 一键签发 + 自动配置 + 跳转
sudo certbot --nginx -d example.com -d www.example.com
# 3. 验证
curl -I https://example.comcertbot 会自动在 Nginx 配置里加入 SSL 相关配置并引用 /etc/letsencrypt/live/example.com/fullchain.pem。若希望一次性加 HSTS:
bash
sudo certbot --nginx -d example.com --redirect --hsts --staple-ocsp场景 2:Apache 全自动 HTTPS
bash
sudo certbot --apache -d example.com -d www.example.com场景 3:只签发、手动配 Web 服务器(webroot)
适合已有站点、配置由你完全掌控:
bash
# 1. 签发
sudo certbot certonly --webroot -w /var/www/html \
-d example.com -d www.example.com
# 2. Nginx 手动配置(片段)
# server {
# listen 443 ssl;
# server_name example.com www.example.com;
# ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# }
# 3. 重载
sudo systemctl reload nginx场景 4:通配符证书(DNS-01 + Cloudflare)
bash
# 凭据文件(见 04 插件文档)
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /root/.secrets/cloudflare.ini \
-d example.com -d '*.example.com'签发后通配符证书可用于 *.example.com 下的任意子域名(如 a.example.com、api.example.com)。
通配符证书只覆盖一级子域名,不含
a.b.example.com(多级子域名需另签或改用多域名 SAN)。
场景 5:多域名 SAN 证书
一张证书包含多个不同域名:
bash
sudo certbot --nginx \
-d example.com \
-d www.example.com \
-d api.example.com \
-d blog.example.org- 证书名默认取第一个域名;用
--cert-name my-sites自定义便于管理。 - 后续要加域名:
sudo certbot --cert-name my-sites -d 新域名 --expand(会重新验证所有域名)。
场景 6:给已有证书追加域名
bash
sudo certbot certonly --cert-name example.com \
--webroot -w /var/www/html \
-d example.com -d www.example.com -d new.example.com \
--expand场景 7:ECDSA 证书(更小更快)
bash
sudo certbot certonly --webroot -w /var/www/html \
-d example.com --key-type ecdsa注意:ECDSA 与 RSA 证书混用时,
renew对同一--cert-name只能保留一种密钥类型;不同密钥类型建议用不同--cert-name。
场景 8:非交互式自动化签发(脚本)
bash
sudo certbot certonly \
--webroot -w /var/www/html \
-d example.com -d www.example.com \
--email ops@example.com \
--agree-tos --no-eff-email \
--non-interactive--non-interactive(或-n)+--agree-tos是脚本化必需,避免卡在交互提问。
场景 9:测试环境演练
bash
# 用 staging,反复调试不触发生产限速
sudo certbot certonly --webroot -w /var/www/html \
-d example.com -d '*.example.com' \
--preferred-challenges dns --manual \
--test-cert确认流程 OK 后,去掉 --test-cert 跑生产。
常见组合速记
| 目标 | 命令要点 |
|---|---|
| Nginx 一条龙 | certbot --nginx -d 域名 |
| 只要证书 | certbot certonly --webroot -w 根目录 -d 域名 |
| 通配符 | certbot certonly --dns-cloudflare ... -d 域名 -d '*.域名' |
| 无 Web 服务 | certbot certonly --standalone -d 域名 |
| 加域名 | 追加 -d + --expand |
