你现在的位置:首页 > 运营维护 > 数据安全维护 > 正文

HTTPS证书过期导致网站打不开,监控脚本了解一下

发布时间:2026-06-24    来源:     作者:    阅读:
当下绝大多数线上网站、业务接口、后台管理系统均已全面切换HTTPS加密协议,HTTP明文访问协议逐步被浏览器淘汰拦截,HTTPSSSL证书成为网站正常对外开放访问的必备前置条件。SSL证书存在固定有效时长,主流证书有效期分为90天短期证书、1年长期证书两类,证书到期后不会自动延期,一旦过期,浏览器会直接拦截网站访问请求,弹出安全风险告警页面,访客无法进入网站,同时搜索引擎会降低站点信任权重、接口请求直接报错、小程序及各类前端内嵌页面彻底无法访问。
在日常服务器运维工作中,人工巡检证书有效期是绝大多数团队的通用方式,依靠运维人员定期查看证书到期时间、登记台账跟进续期。但人工巡检存在极大疏漏风险:节假日无人值守、台账登记遗漏、多站点批量运维疏忽、多域名证书混淆等问题频发,往往等到网站彻底打不开、业务报错激增后,运维人员才能发现证书过期问题,此时已经造成业务中断、访客流失、线上营收受损、站点SEO权重下跌等不可逆损失。
想要彻底规避HTTPS证书过期引发的线上故障,无需搭建复杂运维监控平台、无需额外付费第三方监控服务,只需部署轻量化服务器本地Shell监控脚本,即可实现全自动检测证书剩余有效期、临近过期自动告警、无人值守7*24小时巡检,提前7天、3天、1天多级预警,在证书过期之前完成续期替换,从根源杜绝证书过期导致的网站访问故障。本文详解HTTPS证书过期故障危害、证书时效检测原理、完整可直接运行的监控脚本、定时任务部署、告警配置以及证书快速应急修复方案,适配所有Nginx、Apache线上Web服务环境。

一、HTTPS证书过期后,引发的全方位线上业务故障

很多运维人员误以为证书过期只是浏览器提示不安全,不会彻底阻断访问,实际新版浏览器、接口调用程序、移动端内嵌页面、爬虫程序对过期证书零容忍,一旦证书到期,会触发多层级业务故障,故障影响覆盖前端访问、后端接口、流量收录全链路。

1. 浏览器直接拦截站点访问,网站完全无法打开

主流浏览器内置严格的HTTPS安全校验机制,检测到服务器SSL证书过期、证书域名不匹配、证书链不完整时,不会展示网站任何内容,直接全屏拦截访问,提示连接不安全、证书无效。访客无法手动跳过拦截页面进入站点,全站流量直接归零,前端页面彻底不可用。

2. 后端接口调用全部失败,内部业务系统瘫痪

前后端接口交互、服务器之间内网接口调用、第三方系统对接接口,均会校验SSL证书合法性,程序不会像浏览器一样提供手动跳过选项。证书过期后,所有HTTPS接口请求直接抛出SSL握手失败错误,业务系统提交数据、查询数据、同步数据全部中断,线上业务流程全面停滞。

3. 小程序、公众号、内嵌H5页面强制失效

各类内嵌Web页面的生态平台,对网站SSL证书合规性有着强制硬性要求,一旦证书过期,平台会直接封禁域名接入权限,内嵌页面空白报错、无法加载,依托网页开展的线上活动、用户服务全部中断。

4. 搜索引擎抓取中断,站点收录与权重大幅下滑

搜索引擎爬虫无法绕过过期证书完成页面抓取,会直接停止抓取网站所有页面,站点新增内容无法收录,原有页面索引逐步掉落,关键词排名持续下跌,后续恢复证书后,也需要较长时间才能找回原有搜索流量,对网站长期SEO运营造成不可逆伤害。

5. 人工续期存在窗口期,故障无法秒级恢复

证书过期后再进行续期、替换证书、重载Nginx配置,整个流程至少需要数分钟至数十分钟,这段时间业务持续中断;且紧急替换证书容易出现配置错误、证书链缺失、重载配置失败等二次故障,进一步拉长业务中断时长。

二、人工巡检HTTPS证书的核心短板

部分运维团队依靠人工定期执行命令查看证书到期时间,该模式只适合单站点、少量域名的极简运维场景,多站点集群运维场景下漏洞极其明显:
  1. 巡检存在时间盲区:夜间、周末、法定节假日无人工巡检,证书极易在无人值守时段过期;

  2. 多域名巡检效率极低:一台服务器绑定多个域名、多台服务器集群部署站点,逐个手动查询证书耗时极长;

  3. 人为疏忽不可避免:运维工作繁杂,容易遗漏部分域名证书巡检,出现漏查、忘续期问题;

  4. 无提前预警机制:人工只能查看当前到期时间,无法做到分级提前提醒,只能临近过期才仓促处理。

因此轻量化自动化监控脚本,是低成本、零依赖、高效率的证书运维最优解决方案,无需第三方平台,服务器本地即可完成全天候自动监控。

三、SSL证书有效期检测底层原理

脚本无需读取服务器本地存放的证书文件,直接通过openssl内置安全工具,远程发起SSL握手请求,获取站点当前部署证书的完整信息,自动解析证书到期时间、计算剩余有效天数,全程不影响网站正常运行、不占用服务器带宽资源。
脚本内置多级预警阈值,默认设置:剩余7天发送一级预警提醒、剩余3天发送二级紧急提醒、剩余1天发送高危告警,运维人员收到提醒后,分时段从容完成证书申请、部署、服务重载,完全避开证书过期时间节点。

四、全站通用HTTPS证书有效期监控Shell脚本(直接复制即用)

该脚本适配CentOS、Ubuntu全系列Linux服务器,无需额外安装依赖,系统自带openssl即可直接运行,支持批量监控多个域名,支持邮件实时告警,自动记录巡检日志,可直接部署到生产服务器,无需修改复杂代码。
#!/bin/bash
# HTTPS证书过期自动监控脚本
# 配置区:可自行修改监控域名、告警阈值、邮件配置
# 1.需要监控的域名列表,多个域名空格分隔
DOMAIN_LIST=("www.xxx.com" "api.xxx.com" "admin.xxx.com")
# 一级预警剩余天数:7天
WARNING_DAY1=7
# 二级紧急预警剩余天数:3天
WARNING_DAY2=3
# 高危告警剩余天数:1天
WARNING_DAY3=1
# 告警接收邮箱
MAIL_TO="alert@xxx.com"
# 日志存放路径
LOG_PATH="/var/log/ssl_monitor.log"

# 遍历所有监控域名
for DOMAIN in ${DOMAIN_LIST[@]}
do
    # 获取证书到期时间戳
    END_TIME=$(openssl s_client -connect ${DOMAIN}:443 -showcerts /dev/null | openssl x509 -noout -enddate | cut -d= -f2)
    # 时间格式转换
    END_TIMESTAMP=$(date -d "${END_TIME}" +%s)
    NOW_TIMESTAMP=$(date +%s)
    # 计算剩余有效天数
    REMAIN_DAY=$(( (${END_TIMESTAMP} - ${NOW_TIMESTAMP}) / 86400 ))
    # 获取当前巡检时间
    CURRENT_TIME=$(date "+%Y-%m-%d %H:%M:%S")

    # 日志写入
    echo "${CURRENT_TIME} 域名${DOMAIN} 证书剩余有效期:${REMAIN_DAY}天" >> ${LOG_PATH}

    # 分级告警判断
    if [ ${REMAIN_DAY} -le ${WARNING_DAY3} ];then
        # 高危告警
        echo "【高危告警】${DOMAIN}证书即将过期,仅剩${REMAIN_DAY}天,请立即续期!" | mail -s "SSL证书高危过期告警" ${MAIL_TO}
    elif [ ${REMAIN_DAY} -le ${WARNING_DAY2} ];then
        # 二级紧急告警
        echo "【紧急提醒】${DOMAIN}证书即将过期,仅剩${REMAIN_DAY}天,请尽快续期!" | mail -s "SSL证书紧急过期提醒" ${MAIL_TO}
    elif [ ${REMAIN_DAY} -le ${WARNING_DAY1} ];then
        # 一级常规预警
        echo "【常规预警】${DOMAIN}证书即将过期,仅剩${REMAIN_DAY}天,请安排续期!" | mail -s "SSL证书过期预警通知" ${MAIL_TO}
    fi
done

五、脚本逐行详细解析,零基础也能看懂并自定义修改

1.自定义配置区域

脚本顶部集中配置所有可变参数,运维人员无需看懂脚本逻辑,仅需修改监控域名、告警邮箱、预警天数即可完成适配,支持一次性添加多个站点域名,实现批量域名统一巡检。日志文件单独留存,方便后续回溯证书巡检记录,排查历史告警记录。

2.证书信息获取逻辑

调用系统原生openssl工具,连接站点443HTTPS端口,抓取线上正在生效的SSL证书信息,精准读取官方到期时间,不会读取服务器本地旧证书文件,避免本地证书已替换但线上未重载导致的检测误差,检测结果100%贴合线上真实运行状态。

3.时间戳运算逻辑

将证书到期时间与服务器当前时间统一换算为时间戳,通过秒数差值自动计算剩余有效天数,规避服务器本地时间时区偏差带来的计算错误,保证剩余天数计算精准无误。

4.三级分级告警机制

采用梯度告警模式,避免频繁骚扰运维人员:提前7天发送温和预警,预留充足时间规划证书续期;提前3天发送紧急提醒,督促完成操作;提前1天发送高危强制告警,避免遗漏操作。不同告警等级区分邮件标题,方便运维快速识别故障紧急程度。

六、脚本服务器部署与定时任务配置(全自动无人值守)

1.脚本上传与授权

将脚本上传至服务器固定目录,添加执行权限,命令如下:
chmod +x /usr/local/script/ssl_monitor.sh

2.配置crontab定时任务,每日自动巡检

配置每天凌晨2点自动执行一次证书巡检,避开业务访问高峰期,不影响线上业务运行,定时任务配置命令:
0 2 * * * /usr/local/script/ssl_monitor.sh >/dev/null 2>&1
配置完成后,服务器每日自动后台执行巡检脚本,全程无需人工干预,全天候监控所有绑定域名的SSL证书状态。

七、证书过期应急快速修复方案(故障发生后极速恢复)

若特殊情况出现监控遗漏、证书意外过期,可按照标准化三步极速恢复业务,最大限度缩短故障时长:
  1. 紧急重新签发证书:在线申请同域名全新SSL证书,选择通用多域名证书,匹配站点所有域名;

  2. 替换服务器证书文件:覆盖Nginx/Apache配置目录下的crt证书文件与key私钥文件,保证证书链文件完整;

  3. 平滑重载Web服务:执行服务平滑重载命令,不中断现有连接,无需重启服务器,业务秒级恢复访问。

同时故障恢复后,第一时间查看监控脚本日志,核对告警记录,排查脚本是否存在运行异常,补齐监控盲区。

八、脚本额外优化拓展能力

  • 支持内网HTTPS站点监控:无需公网访问,内网部署的后台系统、接口服务同样可以正常检测证书有效期;

  • 支持证书链完整性检测:可拓展脚本参数,同步检测证书链是否缺失、证书域名是否匹配站点域名,提前排查证书配置错误;

  • 支持企业微信/钉钉机器人告警:可对接群机器人webhook地址,除邮件告警外,同步推送运维工作群,消息触达更及时;

  • 自动清理过期日志:可增加日志自动切割清理指令,避免长期运行日志文件占用服务器磁盘空间。

九、HTTPS证书运维最佳规范

  1. 短期90天证书必须开启自动化监控,短周期证书过期速度快,人工巡检容错率极低;

  2. 证书续期完成后,必须重载Web服务配置,仅替换文件不会生效;

  3. 禁止临近过期当天再替换证书,预留缓冲时间,规避证书签发、服务重载意外报错;

  4. 定期校验监控脚本运行状态,避免服务器crontab异常导致监控失效。

结语

HTTPS证书过期属于典型的低技术门槛、高影响范围的线上低级故障,这类故障并非技术架构缺陷导致,完全是运维巡检疏漏、缺少自动化监控造成的人为故障。相比于搭建复杂运维监控平台、付费第三方云监控服务,本地轻量化Shell监控脚本零成本、无网络依赖、部署简单、运行稳定,完全满足日常证书监控需求。
部署证书过期监控脚本之后,彻底告别人工台账巡检、节假日值守巡检,依靠服务器7*24小时全自动巡检+多级提前告警,运维人员只需收到预警邮件后按时完成证书续期即可。从被动处理网站打不开的突发故障,转变为主动提前预防故障发生,全面提升线上服务稳定性,杜绝因SSL证书过期引发的业务中断、流量流失、SEO权重下跌等一系列运维事故。
关键词:
分享到: