Let's Encrypt证书自动续期配置方法详解

2026-07-21 14 阅读 SSL证书部署
SSL证书部署
Let's Encrypt证书自动续期配置方法详解

Let's Encrypt的免费SSL证书解决了大量中小网站的HTTPS问题,但它有个让人头疼的特点——有效期只有90天。要是每次都手动去续,那简直是给自己找事。好在certbot这个工具自带自动续期机制,配好之后基本上可以彻底不管。

安装certbot并签发证书

以Nginx环境为例,Ubuntu系统下直接用apt安装:

apt install certbot python3-certbot-nginx

装好后执行签发命令,certbot会自动读取Nginx配置文件,找到对应的域名并完成验证:

certbot --nginx -d example.com -d www.example.com

首次运行时会要求填写邮箱和同意服务条款。这个邮箱很重要,证书快过期时Let's Encrypt会发提醒邮件。签发成功后,certbot会自动修改Nginx配置,把443端口的SSL路径指向新证书。

配置自动续期定时任务

certbot安装完成后,系统里其实已经自动生成一个systemd定时器,名字叫certbot.timer。确认它的状态:

systemctl status certbot.timer

如果显示active,说明已经在跑了。这个定时器每天会执行一次续期检查,但certbot的机制是只在证书到期前30天才会真正执行续期操作,所以不会频繁请求Let's Encrypt的API。

如果你的系统没有自动生成定时任务,手动加一个cron也行:

0 3 * * * /usr/bin/certbot renew --quiet

每天凌晨三点执行检查。renew命令只处理快过期的证书,不会影响正常使用中的证书。

续期后重启Web服务器

这里有个容易踩的坑:certbot续期成功后,新证书文件替换了旧文件,但Nginx并不会自动加载。需要在续期钩子里加上reload命令。certbot提供了一个配置目录来放钩子脚本:

/etc/letsencrypt/renewal-hooks/deploy/目录下创建一个脚本文件,比如叫reload-nginx.sh,内容就两行:

#!/bin/bash
systemctl reload nginx

记得给执行权限:chmod +x reload-nginx.sh

这样每次证书续期完成后,Nginx会自动重载配置,新证书立即生效。最后用certbot renew --dry-run跑一次模拟测试,确认整个续期流程没有问题。这个命令不会真的去签证书,只是验证续期逻辑是否正常。