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.pem和privkey.pem。
5. HTTP-01 验证与防火墙
- Let’s Encrypt HTTP-01 验证要求域名可访问端口 80。
- 需要确保防火墙放行 80 和 443 端口。
6. 证书更新后重载 Nginx
Certbot 会自动执行 nginx -s reload,但也可手动:
bash
sudo systemctl reload nginx7. 使用 DNS 验证
- 适用于裸域、通配符证书或内网环境。
- 通过 DNS API 插件自动添加 TXT 记录。
bash
sudo certbot certonly --dns-cloudflare -d "*.example.com" -d example.com8. 证书管理及故障排查
- 使用
sudo certbot certificates查看证书状态。 - 常见问题:IP 与域名不匹配、端口 80 被占用、DNS 解析错误。
Nginx证书自动化