Skip to content

实战场景

目标:照着做就能跑通的完整示例。先 --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.com

certbot 会自动在 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.comapi.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