从Let'sEncrypt获取免费且安全的证书,且系统在该证书 到期之前自动续签
一、前置条件
在开始之前,请确保满足以下条件:
一个已解析到服务器 IP 的域名(SSL 证书不能绑定 IP)
服务器上已安装并运行 Nginx(或 Apache)
服务器80 端口和443 端口已开放(云服务器需在安全组放行)
拥有 root 或 sudo 权限
二、安装 Certbot
Certbot 的安装方式因操作系统而异,推荐使用apt(我是debian)
使用 apt 安装:
sudo apt update
sudo apt install certbot python3-certbot-nginx -y


验证
安装完成后,可通过 certbot --version 验证是否安装成功。

三、获取 SSL 证书
Certbot 的 --nginx 插件会自动完成域名验证、证书申请和 Nginx 配置修改。执行以下命令(将 example.com 替换为你的真实域名):
sudo certbot --nginx -d example.com -d www.example.com
如果需要同时为多个域名申请证书,可以多次使用 -d 参数指定。

说明
执行过程中 Certbot 会:
提示输入邮箱地址(用于接收证书过期提醒)
要求同意 Let's Encrypt 服务条款
自动通过 HTTP-01 挑战验证域名所有权
自动修改 Nginx 配置,添加 HTTPS 支持
询问是否将 HTTP 流量强制重定向到 HTTPS(建议选择 Redirect)
证书申请成功后,文件默认存储在:
/etc/letsencrypt/live/example.com/
├── fullchain.pem # 证书链(Nginx 中 ssl_certificate 使用此文件)
├── privkey.pem # 私钥(Nginx 中 ssl_certificate_key 使用此文件)
├── cert.pem
└── chain.pem
Nginx 配置会被自动修改为类似以下内容:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# ... 其他配置
}
完成申请后,重新加载 Nginx 使配置生效
nginx -s reload
四、自动续签机制
这是整个流程中最关键的部分。Certbot 在安装后会自动配置定时任务,无需手动设置。
验证自动续签是否已配置
sudo systemctl status certbot.timer
如果看到 Active: active (waiting),说明自动续签已启用

浙公网安备 33010602011771号