外贸站宝塔面板网站SSL证书过期自动续期脚本

外贸网站使用HTTPS加密是基础要求,但Let's Encrypt等免费证书每90天需要手动续期,一旦忘记续期,网站可能直接无法访问,造成客户流失和信任危机。
下面在宝塔面板中配置一个自动续期脚本,全程零基础可操作。

动手前的准备

  • 确保宝塔面板已安装并正常运行(推荐版本7.9+)。
  • 域名已经解析到当前服务器IP,并且可以通过HTTP或HTTPS访问。
  • 服务器已安装curl和openssl(大多数系统自带)。
  • 通过SSH或宝塔面板的终端功能登录服务器。

配置自动续期脚本

第一步:安装acme.sh(Let's Encrypt客户端)

在SSH终端执行:

curl https://get.acme.sh | sh -s email=youremail@example.com

安装完成后,重新登录SSH或运行source ~/.bashrc使acme.sh命令生效。

第二步:申请并部署SSL证书

假设你的域名是example.com,使用以下命令申请证书(推荐DNS API方式,可自动续期):

acme.sh --issue -d example.com -d www.example.com --dns dns_cf

注意:dns_cf表示Cloudflare的DNS API;
如果你用其他DNS服务商,需换成对应的参数(如dns_alidns_dp等)。
申请成功后,证书文件会保存在~/.acme.sh/example.com/下。

第三步:在宝塔面板中添加计划任务

  1. 登录宝塔面板,点击左侧菜单“计划任务”。
  2. 点击“添加任务”,任务类型选择“Shell脚本”,任务名称输入“Let's Encrypt证书自动续期”。
  3. 执行周期选择“每天”或“每周”,建议每天执行一次(自动续签脚本会判断是否需要更新)。
  4. 脚本内容填入:
acme.sh --renew -d example.com --force && acme.sh --installcert -d example.com --key-file /www/server/panel/vhost/cert/example.com/privkey.pem --fullchain-file /www/server/panel/vhost/cert/example.com/fullchain.pem && bt reload

请将example.com替换为你的真实域名,
并确保/www/server/panel/vhost/cert/example.com/目录已存在(可手动创建)。bt reload用于重载宝塔Web服务使新证书生效。

  1. 点击“添加”保存。

第四步:关闭宝塔面板自带的SSL续签功能(可选)

宝塔面板默认会对Let's Encrypt证书自动续期,但可能存在与自定义脚本冲突的情况。
你可以在“网站”设置中关闭“自动续期”勾选,只保留计划任务脚本管理。

避坑指南

  • 目录权限问题:确保脚本中使用的证书输出目录(如/www/server/panel/vhost/cert/example.com/)所有者是www用户或root,并且nginx/PHP有读取权限。如果权限不对,证书续签后网站仍读取旧证书。
  • DNS解析延迟:使用DNS API模式时,确保DNS服务商API密钥有效且域名解析记录与acme.sh配置一致。如果申请失败,检查日志~/.acme.sh/acme.sh.log
  • 服务器时间同步:Let's Encrypt证书签发对时间敏感,请确保服务器时间准确(运行date检查,若偏差较大执行ntpdate ntp.aliyun.com同步)。
  • 频率限制:一个域名每周申请次数有限,调试期间不要频繁重复申请;脚本中的--force参数仅在确认需要更新时使用。

验证续期效果

  1. 手动运行一次计划任务:在“计划任务”列表点击“执行”按钮,观察执行日志。
  2. 通过SSH运行以下命令查看证书剩余天数:
   openssl x509 -enddate -noout -in /www/server/panel/vhost/cert/example.com/fullchain.pem
  1. 用浏览器访问https://example.com,点击地址栏锁图标检查证书有效期。
  2. 如果一切正常,计划任务每天自动运行,证书过期前会自动续签并发起重载服务。

常见问题解答

Q:脚本执行报错“Can't find command acme.sh”怎么办?
A:确认acme.sh已安装,并执行source ~/.bashrc使其生效;如果仍不行,在计划任务脚本中使用绝对路径:/root/.acme.sh/acme.sh --renew …

Q:证书续签后网站还是显示旧证书?
A:检查脚本中bt reload是否成功执行;如果使用Nginx,也可以手动重启Nginx(nginx -s reload)。同时确认输出目录的证书文件已被更新。

Q:我的外贸站有多个域名怎么办?
A:在acme.sh命令中继续加-d sub.example.com即可,多个域名使用同一张多域名证书;计划任务脚本中需要同时指定所有域名的证书输出路径。

---

以上配置完成后,你的外贸站SSL证书将自动续期管理,不再需要每次手动处理。
如果遇到异常情况,优先检查日志文件和服务器时间,基本能解决大部分问题。

分享到:
上一篇
跨境独立站宝塔面板服务器住宅机器低成本建站测算
下一篇
家用住宅主机Linux GDPR合规跨境站点服务器配置
1
系统公告

机房迁移升级通知

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