HTTPS更新证书
2026-10-02
运维
00

目录

修复Let’s Encrypt证书过期并配置自动续期
现象
排查修复
1. 检查云服务器安全组(阿里云ECS)
2. 检查本机防火墙ufw
3. 检查Nginx状态
4. 再次执行模拟续期(dry‑run)
执行真正证书更新
验证新证书有效期
配置自动续期
备选方案:cron定时任务(当systemd定时器失效时使用)
踩坑总结

修复Let’s Encrypt证书过期并配置自动续期

环境:Ubuntu + Nginx + Certbot,域名:www.zheng‑chang‑ren.xyz,原证书已过期

现象

访问网站浏览器提示连接不是私密连接,证书过期。 查看旧证书信息:

  • 域名:www.zheng‑chang‑ren.xyz
  • 颁发机构:Let’s Encrypt YR1
  • 到期时间:2026‑09‑13,已经过期。

尝试执行模拟续期命令,一开始报连接超时错误:

bash
展开代码
sudo certbot renew --dry-run

报错关键信息:

展开代码
Timeout during connect (likely firewall problem)

原因:Let’s Encrypt 的 HTTP‑01 域名验证方式,需要公网可以访问服务器80端口,安全组/防火墙拦截80端口会直接验证失败。

排查修复

1. 检查云服务器安全组(阿里云ECS)

入方向放行 TCP 80,来源 0.0.0.0/0。

注意:很多人只开放443(HTTPS),关闭80会导致certbot续期失败。

2. 检查本机防火墙ufw

bash
展开代码
sudo ufw status # 如果开启防火墙,放行80端口 sudo ufw allow 80/tcp sudo ufw reload

3. 检查Nginx状态

bash
展开代码
sudo nginx -t sudo systemctl status nginx

确保 Nginx 配置无错误、服务正常运行。

4. 再次执行模拟续期(dry‑run)

--dry-run 只是模拟流程,不会真正签发证书,用来提前排查问题。

bash
展开代码
sudo certbot renew --dry-run

出现下面代表模拟全部成功:

展开代码
Congratulations, all simulated renewals succeeded

执行真正证书更新

模拟测试通过后,执行真实续期,生成新证书:

bash
展开代码
sudo certbot renew

证书文件存放路径:

展开代码
/etc/letsencrypt/live/www.zheng‑chang‑ren.xyz/ ├─ fullchain.pem # 完整证书链 └─ privkey.pem # 私钥

⚠️必须重载Nginx,新证书才会生效,只续期不重载服务,网站依旧使用旧的过期证书。

bash
展开代码
sudo systemctl reload nginx

使用 reload 平滑重载,不会中断网站访问;不要用 restart。

验证新证书有效期

bash
展开代码
sudo openssl x509 -in /etc/letsencrypt/live/www.zheng-chang-ren.xyz/fullchain.pem -noout -dates

输出会显示新的生效时间与到期时间,不再是旧的9月13日。

浏览器访问网站,Ctrl+Shift+R 强制刷新,点击地址栏小锁查看证书信息确认更新完成。

配置自动续期

Certbot安装完成默认自带 certbot‑renew.timer systemd定时器,证书到期前30天自动尝试续期。

查看定时器状态:

bash
展开代码
sudo systemctl list-timers certbot-renew.timer

备选方案:cron定时任务(当systemd定时器失效时使用)

编辑root的定时任务:

bash
展开代码
sudo crontab -e

添加一行,每周凌晨2点执行续期,成功则重载Nginx:

cron
展开代码
0 2 * * 1 /usr/bin/certbot renew --quiet && systemctl reload nginx

踩坑总结

  1. HTTP‑01 验证依赖80端口公网可达,即使全站强制HTTPS跳转,80端口也不能关闭。
  2. dry‑run 一定要先跑一遍,避免正式续期踩坑。
  3. 证书续期成功不等于网站生效,一定要 reload Nginx。
  4. Let’s Encrypt证书有效期90天,依靠自动任务,不要手动等到过期再处理。

本文作者:zzz

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!