在现代网站部署中,HTTPS已成为基本标配,它不仅保障了数据传输的安全性,还有助于提升搜索引擎排名。为了快速部署SSL证书,越来越多的网站选择使用免费证书,但该证书的有效期仅为90天,因此自动化续签机制显得尤为重要。
一、基础准备:服务器环境及域名要求
在开始之前,请确认你已拥有一个公网可访问的云服务器,建议操作系统为 Ubuntu 20.04 / Debian / CentOS 7+;
- 确保Nginx已正确安装并运行;
- 确保域名已解析至该云服务器公网 IP,A 记录或 CNAME 配置无误;
- 确保防火墙或安全组已开放 80(HTTP)和 443(HTTPS)端口。
准备工作完成后,即可开始证书自动化部署流程。
二、安装Certbot 与 Nginx 插件
Certbot 是由 Electronic Frontier Foundation(EFF)推出的官方客户端工具,用于申请和续签Let's Encrypt免费证书。其最大优势在于:支持一键申请、配置并自动续签。
Ubuntu / Debian 系统安装:
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
CentOS / Rocky Linux 系统安装:
sudo yum install epel-release -y
sudo yum install certbot python3-certbot-nginx -y
安装完成后,输入以下命令检查版本确认:
certbot --version
输出如 certbot 2.8.0 表示安装成功。
三、使用 Certbot 为 Nginx 配置 HTTPS 证书
Certbot 能自动识别当前 Nginx 配置的 server_name,若配置正确,只需一条命令即可申请证书并部署 HTTPS。
Step 1:预配置好 Nginx 虚拟主机
确保你已设置如下虚拟主机(80端口)配置:
server {
listen 80;
server_name www.example.com example.com;
root /var/www/html;
index index.html;
}
重载配置:
nginx -t && systemctl reload nginx
Step 2:申请证书并自动配置 HTTPS
执行以下命令:
sudo certbot --nginx
Certbot 会自动读取 Nginx 配置,提示你选择需要启用 HTTPS 的域名,选择后它将:
- 验证域名所有权(通过 HTTP challenge);
- 向 Let's Encrypt 请求证书;
- 修改 Nginx 配置以启用 HTTPS;
- 自动创建定时任务以实现续签。
申请成功后,会提示如下内容:
Congratulations! You have successfully enabled HTTPS on https://example.com
此时浏览器访问 https://example.com 即可看到安全锁标识。
四、自动续签机制:Certbot 定时任务解读
Certbot 会自动在安装时为系统添加定时任务(cron 或 systemd timer)实现自动续签。默认每天执行一次,但只有在证书离过期30天内时才会实际续签。
查看续签定时任务:
systemctl list-timers | grep certbot
或:
cat /etc/cron.d/certbot
你也可以手动测试续签是否正常:
sudo certbot renew --dry-run
如输出中显示 Congratulations, all renewals succeeded. 表示续签配置无误。
五、证书续签后的 Nginx 自动重载问题
虽然 Certbot 会自动续签,但续签后需要让 Nginx 重新加载配置,才能应用新证书。
Certbot 已自动将 --deploy-hook "nginx -s reload" 添加至续签流程,无需额外干预。但你也可以在续签命令中显式指定:
sudo certbot renew --deploy-hook "systemctl reload nginx"
或者将该钩子写入 /etc/letsencrypt/renewal-hooks/deploy/ 目录中。
示例脚本 /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh:
#!/bin/bash
systemctl reload nginx
给脚本添加执行权限:
chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
这样,每次续签后 Nginx 都会自动加载新证书。
HTTPS 是站点信任的基础,而自动化续签更是现代化部署的核心一环。无论你是技术新手还是运维老手,学会配置 Nginx 自动化 SSL 管理,将极大提升你的网站运营稳定性。