宝塔面板SSL证书过期怎么办?自动续签配置教程+续签失败排查

你是否也遇到过:客户发来消息说你网站打不开,打开一看,浏览器显示一个大大的红色警告:”您的连接不是私密连接”。

这多半是SSL证书过期了。

Let’s Encrypt证书有效期是90天,三个月到期一次,需要手动续签。如果没有配好自动续签,迟早会忘。忘了之后,网站HTTPS失效,浏览器直接报警,访客看到红色警告页基本立刻关掉,搜索排名也会受影响。

好消息是宝塔面板处理这件事其实不麻烦。这篇文章把三个点讲清楚:怎么第一次申请SSL、怎么配好自动续签、自动续签失败了怎么排查。

宝塔提供哪几种证书?

宝塔面板里申请SSL,目前主要有两个选项:

宝塔SSL:和宝塔合作的免费证书,一次申请有效期是1年,但不支持续签,到期了必须重新申请。操作麻烦,不推荐。

Let’s Encrypt:国际通用的免费SSL,有效期3个月,支持续签,宝塔有内置的自动续签机制。这是主流选择,本文主要讲这个。

付费证书:你也可以去第三方渠道购买付费证书,或者宝塔官网提供的付费证书。一般看你购买的期限。(非商业的个人网站用免费证书就足够了,而付费 SSL 证书(如 OV 企业型、EV 增强型)

点击查看 宝塔官网锐安信DV SSL证书

第一步:申请Let’s Encrypt证书

如果你的网站还没装SSL,先从这里开始。已经装好的跳到第二步。

登录宝塔后台 → 左侧菜单点网站 → 找到你的域名,点后面的设置 → 弹出的窗口里点SSL → 选(免费证书)Let’s Encrypt标签。

bt panel ssl lets encrypt apply

验证方式这里有两个选项,选哪个取决于你的域名解析情况:

文件验证:宝塔在网站目录里放一个验证文件,Let’s Encrypt来访问确认你拥有这个域名。要求是域名已经正确解析到服务器IP,80端口可以正常访问。这是最常用的方式,速度快,一两分钟出证书。

如果你还不会解析域名可以参考:域名解析教程

DNS验证:在域名的DNS解析里添加一条TXT记录来验证身份。如果你的服务器80端口被封了、或者域名还没解析生效,就用这个方式。缺点是需要手动操作DNS,每次续签也要手动加记录——所以除非文件验证用不了,否则不推荐DNS验证做自动续签。

勾选你的域名(www和不带www的都勾上),点申请,等一两分钟,看到”部署成功”就完成了。

申请完之后,在SSL页面把强制HTTPS打开,让所有HTTP流量自动跳转到HTTPS。

bt panel ssl force https enable

第二步:确认自动续签是否已开启

宝塔会在证书到期前30天内自动触发续签任务,可以在左侧计划任务处查看是否存在名为”续签Let’s Encrypt证书”的任务,如果有这个任务并且是启用状态,SSL就是自动续签的。

去确认一下:宝塔后台 → 左侧菜单点计划任务,在任务列表里找有没有一条叫”续签Let’s Encrypt证书”或类似名字的任务。

bt panel crontab ssl renew task

通常是每天执行一次,宝塔用这个频率来防止证书过期。任务存在且状态是启用,说明自动续签已经配好了,不需要额外操作。

如果列表里找不到这条任务,需要手动添加——点右上角添加任务

  • 任务类型:Shell脚本
  • 任务名称:续签SSL证书(随便写)
  • 执行周期:每天,时间选个凌晨低峰期,比如凌晨3点
  • 脚本内容:
bt jihua

保存之后这条任务每天自动跑,到期前30天内会触发续签。

第三步:手动续签(应急用)

自动续签没生效、或者发现证书马上要到期了,手动续签是最直接的解决方式。

宝塔后台 → 网站 → 找到对应域名 → 设置 → SSL → Let’s Encrypt → 点续签按钮。

bt panel ssl manual renew button

点续签之后宝塔会重新向Let’s Encrypt申请一张新证书,成功后到期时间会往后延3个月。整个过程通常一两分钟,看到成功提示就完成了。

手动续签完之后,回计划任务检查一下自动续签任务是否还在启用状态,防止下次又忘了。

自动续签失败怎么查?几个最常见原因

自动续签这东西,配好了90%的时间没问题,但偶尔会失败。常见失败原因包括:域名未正确解析、80端口被占用、计划任务被删除或禁用、面板版本过旧。再加上一个经常被忽视的——letsencrypt.json配置文件里有残留失败记录。

逐一排查:

原因一:域名DNS解析有问题

文件验证方式要求Let’s Encrypt能从外网访问到你的服务器。如果域名解析的IP和服务器实际IP对不上、或者DNS还没生效,验证就会失败。

在服务器上跑这条命令确认域名解析是否指向本机(自行替换为你自己的域名):

返回的IP和服务器IP一致才行。

原因二:80端口被占用或屏蔽

文件验证走的是HTTP(80端口),如果80端口被其他进程占着,或者服务器防火墙屏蔽了80端口,Let’s Encrypt就访问不到验证文件。

检查80端口是否正常监听:

bash

正常情况应该看到Nginx在监听80端口。如果没有,检查Nginx是否启动,以及宝塔防火墙里80端口是否放行。

原因三:计划任务被禁用或删除

有时候装了某些插件,或者手动操作过,计划任务会被意外禁用。回宝塔后台 → 计划任务,确认续签任务状态是启用,没有被关掉。

原因四:宝塔面板版本太旧

宝塔老版本的自动续签脚本有已知的bug,比如9.0.0版本存在证书内容比对不匹配的问题,导致脚本找不到即将到期的证书从而不触发续签。

宝塔后台 → 面板设置 → 检查更新,把宝塔更新到最新版本,很多续签失败的问题会随版本更新修复。

配置Nginx让证书续签更稳定

Let’s Encrypt文件验证时,会访问 http://你的域名/.well-known/acme-challenge/ 这个路径。如果你的Nginx配置里有强制跳转HTTPS的规则,这条验证请求可能会被重定向到HTTPS,而Let’s Encrypt只接受HTTP验证,就会失败。

检查一下宝塔里这个网站的Nginx配置(网站设置 → 配置文件),确认80端口的server块里有这段例外规则,让验证路径不被重定向:

检查一下宝塔里这个网站的Nginx配置(网站设置 → 配置文件),确认80端口的server块里有这段例外规则,让验证路径不被重定向:

bt panel nginx config acme challenge

宝塔面板在申请证书的时候通常会自动处理这部分,但如果你之前手动改过Nginx配置,可能会把这段规则覆盖掉。遇到续签失败时检查一下这里。

配置好之后,加一个监控兜底

自动续签已经配好了,但人不能完全依赖自动化——万一计划任务哪天没跑起来、或者续签失败了没注意,最好有一个外部监控在证书快到期的时候主动提醒你。

UptimeRobot的免费版支持SSL证书到期监控,设置很简单,到期前30天会发邮件提醒,不需要付费升级。

关于UptimeRobot的设置方法,参考:UptimeRobot免费版监控教程

宝塔面板建站完整流程:宝塔面板完整使用教程

宝塔面板安全加固避免配置被篡改:宝塔面板安全加固10项配置

如果你用的是Hostinger VPS建站,可以参考:Hostinger VPS搭建宝塔+WordPress完整教程

域名指南:如何正确注册与解析域名

SSL证书续签,配一次就可以躺平,只要自动续签任务在跑、80端口没问题,三个月到期的时候宝塔会自己处理,你不需要管。麻烦的是出了问题不知道从哪查,按照上面的几个原因逐一核对,大多数情况都能找到。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注