SSL证书过期自动续期宝塔定时脚本

如果你的网站使用了宝塔面板自带的 Let's Encrypt 免费 SSL 证书,可能会遇到证书到期后网站提示“不安全”。
虽然宝塔面板默认会在证书到期前自动续期,但不少用户反馈续期失败或定时任务没生效。
本文手把手教你写一个可靠的自动续期脚本,并通过宝塔的计划任务定时执行,彻底解决证书过期问题。

准备工作

在开始配置之前,先确认以下条件满足:

  • 宝塔面板版本:建议 7.9 及以上版本(当前主流版本均可)。
  • SSL 证书类型:必须是宝塔面板内申请的 Let's Encrypt 免费证书(付费证书或手动上传的证书不支持自动续期)。
  • 服务器环境:能正常连接外网,且 80 和 443 端口未被占用(续签需验证域名所有权)。
  • SSH 或宝塔终端:用来创建脚本文件,也可以直接在宝塔面板的文件管理里操作。

创建自动续期脚本

打开宝塔面板的「文件」功能,进入 /www/server/panel/ 目录,新建一个文件,命名为 auto_renew_ssl.sh
将以下脚本内容复制进去并保存:

#!/bin/bash
# 宝塔面板 SSL 证书自动续期脚本
# 适用于 Let's Encrypt 免费证书

# 宝塔面板 Python 环境中的续签命令
/www/server/panel/pyenv/bin/python /www/server/panel/class/acme_v2.py --renew=1 2>&1

if [ $? -eq 0 ]; then
    echo "$(date): SSL证书续期成功" >> /www/server/panel/ssl_renew.log
else
    echo "$(date): SSL证书续期失败,请检查日志" >> /www/server/panel/ssl_renew.log
fi

说明

  • 脚本核心是调用宝塔面板的续签接口 acme_v2.py--renew=1 表示强制检查并续期所有到期证书。
  • 执行结果会写入日志文件 ssl_renew.log,方便后续排查。

保存后,右键文件设置权限为 755(或执行 chmod +x auto_renew_ssl.sh)。

添加定时任务

  1. 进入宝塔面板左侧菜单「计划任务」。
  2. 点击「添加任务」,按下图配置:
  • 任务类型:Shell 脚本
  • 任务名称:SSL 证书自动续期
  • 执行周期:建议选择「每月」或「每周」,例如每月 1 日凌晨 3 点(Let's Encrypt 证书有效期 90 天,每月跑一次足够)。也可以选择「N 分钟」为 30 天,但注意不要频繁触发(有频率限制)。
  • 脚本内容:填写 /bin/bash /www/server/panel/auto_renew_ssl.sh
  1. 点击「添加任务」保存。

之后可以点击任务右侧的「执行」按钮,手动测试一次。
等待几秒后刷新页面,查看日志文件 /www/server/panel/ssl_renew.log 是否有输出。

避坑指南

  • 证书颁发频率限制:Let's Encrypt 对同一域名每周最多续期 5 次,所以不要设置过短的周期(如每天跑)。每月或每两月执行一次最安全。
  • 端口检测:续签时需要访问你的域名下的 /.well-known/acme-challenge/ 目录,确保 80 端口可访问。如果用了 CDN 或防火墙拦截,续签会失败。
  • 日志容量:脚本每执行一次会追加日志,长时间后日志文件可能变大。可以定期清空或使用 logrotate 管理。
  • 脚本路径:确保脚本路径和权限正确,否则计划任务会报“无执行权限”。

效果验证

手动执行一次计划任务后,可以通过以下方式确认续期是否成功:

  1. 查看日志:打开 /www/server/panel/ssl_renew.log,如果出现“SSL证书续期成功”且无报错,说明正常。
  2. 检查证书到期时间:进入宝塔面板「网站」→ 点击对应网站 → 「SSL」→ 查看证书有效期。如果到期时间被刷新为未来 90 天,则续期成功。
  3. 浏览器访问:用无痕模式打开网站,查看地址栏锁图标是否正常,点击证书详情确认到期日期。

常见问题

Q:执行脚本后日志显示“续期失败”,怎么办?
A:检查服务器是否能正常访问 Let's Encrypt 的验证服务器(outbound 80/443)。另外,确保域名解析正确指向本机 IP。可以在宝塔的「软件商店」中重启 Nginx 或 Apache 后再试。

Q:我用了其他 CA 签发的证书,脚本能续期吗?
A:不能。该脚本只针对宝塔面板内申请的 Let's Encrypt 免费证书。其他证书需使用对应 CA 的工具或手动更新。

Q:定时任务到期后没自动执行怎么办?
A:检查宝塔面板的定时任务服务是否正常运行。可以在 SSH 执行 systemctl status crond 查看。如果服务未启动,运行 systemctl start crond 并设置开机自启。

如果你正在配置宝塔面板的 SSL 证书自动续期,建议先按上述步骤完整操作一遍,再根据你的环境微调计划任务周期。
遇到异常时优先回看避坑指南和高频问题部分,基本能解决大部分问题。

分享到:
上一篇
WooCommerce批量导入跨境产品AI脚本
下一篇
批量修复网站文件权限异常访问故障
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意