宝塔定时任务实现SSL证书自动续期教程

宝塔面板可以通过添加Shell计划任务,自动为站点续期Let's Encrypt SSL证书。
你只需确认服务器已安装acme.sh,将续期脚本填入计划任务并设置每月执行一次,之后证书过期前会自动续签,无需人工干预。
整个配置过程约10分钟,适合没有编程经验的用户。

动手之前确认这三个条件

  • 站点已开启Let's Encrypt证书:在宝塔面板左侧“网站”中找到对应站点,确认SSL管理界面已成功签发证书。
  • acme.sh已安装:宝塔默认携带acme.sh,但版本可能较老。执行 acme.sh --version 检查,若未安装可用 curl https://get.acme.sh | sh 安装。
  • 计划任务可正常执行:在宝塔“计划任务”中随意创建一个简单的Shell任务(如 echo test),手动执行一次确认状态为成功。

编写自动续期脚本

复制以下脚本,替换 yourdomain.com 为你的实际域名:

#!/bin/bash
# 续期指定域名证书(可重复使用参数)
acme.sh --renew -d yourdomain.com --force
# 续期成功后需重载Web服务使新证书生效
/etc/init.d/nginx reload
  • 如果你使用Apache,将最后一行改为 /etc/init.d/httpd reload
  • 重载操作也可写成 nginx -s reload,取决于你的系统。
  • 需要续期多个域名时,可以续一行 acme.sh --renew -d domain2.com --forcenginx reload,但建议每个域名单独任务,更易排错。

在宝塔面板添加计划任务

  1. 登录宝塔后台,点击左侧“计划任务”。
  2. 点击“添加任务”,任务类型选 Shell脚本
  3. 任务名称填写“SSL自动续期”(可自定)。
  4. 执行周期:选择“自定义”,输入 0 3 1 * *(每月1日凌晨3点执行),你也可以选“每月”并指定1号。
  5. 脚本内容粘贴上方编写的脚本(注意替换域名)。
  6. 点击“添加”保存。
  7. 添加后,在任务列表右侧点击“执行”测试一次,查看执行日志是否有报错。

容易踩坑的几点说明

  • acme.sh版本过旧:宝塔默认带的acme.sh可能不支持某些续期参数,建议升级:acme.sh --upgrade
  • 证书路径权限:Let's Encrypt证书默认存放在 /usr/local/panel/ssl/ 或类似路径,确保计划任务以root用户执行(宝塔默认以root运行计划任务)。
  • 续期频次限制:Let's Encrypt对每域名每周最多续期5次,每月执行一次完全安全。不要设置每天执行。
  • Web服务重载失败:如果服务器内存不足或nginx配置错误,重载会失败。手动执行脚本后,用 nginx -t 检查配置。

验证自动续期是否生效

  • 手动触发:在计划任务列表点击刚创建的任务右边的“执行”,查看日志最末是否显示 Reload SuccessCertificate renewed
  • 查看证书到期时间:在本地终端或在线工具运行以下命令:
  echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates

输出中的 notAfter 日期即为到期时间。
如果续期成功,该日期应更新为当前时间后约90天。

  • 宝塔SSL管理:站点设置→SSL→Let's Encrypt右侧会显示到期时间,手动刷新查看是否更新。

常见问题

Q1: 宝塔面板自带SSL续期功能吗?

宝塔提供手动续期(一键点击),但无法自动按计划执行。
本文通过计划任务间接实现自动续期,不受面板版本限制。

Q2: 脚本执行后提示“未找到acme.sh”怎么解决?

确认acme.sh安装路径(默认 /root/.acme.sh/acme.sh)。
如果未安装,执行官方安装脚本:curl https://get.acme.sh | sh 并重启终端。
计划任务脚本中建议使用绝对路径 /root/.acme.sh/acme.sh --renew ...

Q3: 续期成功后网站仍提示证书过期?

很可能Web服务没有重载。
检查脚本中是否包含 nginx reloadhttpd reload,并确认该命令执行成功。
也可以手动重启Web服务后再刷新。

Q4: 这个方法支持泛域名证书吗?

支持。
但需要配置acme.sh使用DNS API验证,脚本中需额外添加 --dns dns_cf 等参数,且需提前设置API Token。
如果不熟悉,建议单独为泛域名创建任务。

如果你正在用宝塔管理网站,按本文步骤配置定时续期后,SSL证书管理基本可以“甩手”。
遇到报错时,优先回看“避坑说明”,确认acme.sh版本、权限和重载命令是否正常。

分享到:
上一篇
爬虫抓取异常防火墙与站点配置整改清单
下一篇
自动化脚本定期扫描容器镜像安全漏洞实操指南
1
系统公告

机房迁移升级通知

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