SorryToPerson logo
返回
Nginx2026-04-15·8 分钟

Nginx 证书自动化与 Let’s Encrypt

介绍通过 Let’s Encrypt、Certbot 及自动化脚本为 Nginx 配置 HTTPS 的最佳实践。

Nginx 证书自动化与 Let’s Encrypt

1. Let’s Encrypt 简介

  • 免费的 TLS/SSL 证书颁发机构。
  • 证书有效期 90 天,建议自动续期。

2. Certbot 安装与获取证书

bash
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
  • Certbot 自动修改 Nginx 配置并重载服务。
  • 也可使用 certonly 只生成证书。

3. 自动续期配置

Certbot 安装后默认会创建系统定时任务。手动测试续期:

bash
sudo certbot renew --dry-run
  • 确认 renew 成功后,无需频繁手动干预。

4. Nginx 证书路径

nginx
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  • 证书目录由 Certbot 管理。
  • 使用 fullchain.pemprivkey.pem

5. HTTP-01 验证与防火墙

  • Let’s Encrypt HTTP-01 验证要求域名可访问端口 80。
  • 需要确保防火墙放行 80 和 443 端口。

6. 证书更新后重载 Nginx

Certbot 会自动执行 nginx -s reload,但也可手动:

bash
sudo systemctl reload nginx

7. 使用 DNS 验证

  • 适用于裸域、通配符证书或内网环境。
  • 通过 DNS API 插件自动添加 TXT 记录。
bash
sudo certbot certonly --dns-cloudflare -d "*.example.com" -d example.com

8. 证书管理及故障排查

  • 使用 sudo certbot certificates 查看证书状态。
  • 常见问题:IP 与域名不匹配、端口 80 被占用、DNS 解析错误。
Nginx证书自动化