证书自动续期成功,为什么访问网站仍提示过期?
续期任务显示成功,浏览器却还在提示证书过期,先别反复申请新证书。任务成功可能只表示新文件已经生成;用户访问时拿到的,仍可能是反向代理内存里的旧证书、另一台节点的证书,或CDN边缘的独立证书。排查应从实际访问的域名开始,再沿连接路径向内核对。
先记录“哪个入口、拿到了哪张证书”
记录完整主机名、访问时间、浏览器错误文字和证书有效期。根域名、www、客户后台与下载子域可能由不同入口提供服务,不能用一个首页正常来代表全部正常。若只有部分用户遇到问题,再检查他们是否走了不同网络、IPv4/IPv6或区域节点,而不要直接认定是浏览器缓存。
在安装了OpenSSL的排查环境中,可用下面的只读命令查看某个公网TLS入口返回的叶证书。把example.com替换成实际主机名:
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates -serial
-servername指定SNI主机名,同一个IP承载多个站点时尤其重要。这条命令用于观察返回证书,输出了日期并不代表已经完成主机名、完整信任链和全部浏览器的验证。命令无输出时应单独查看连接错误,不要把它记成“证书正常”。
按三层核对,别只盯续期日志
- 签发层:确认续期工具本轮实际生成的新证书、有效期和文件位置。任务日志中的成功可能属于另一域名,符号链接也可能指向旧目录。
- 部署层:核对TLS终止服务实际读取的文件路径。更新文件后,相关服务是否按其机制重新加载?先校验配置再进行受控reload,并读日志确认成功;不要为了换证书盲目重启整个业务栈。
- 访问层:从公网重新读取证书,并和部署对象的序列号、有效期对应。若有负载均衡,逐个检查后端部署状态;同一域名偶发报错时尤其不能只测一次。
例如,源站上已经生成新证书,但流量先到CDN,用户看到的通常是边缘节点提供的证书。源站续期成功不能替代CDN自定义域名证书的检查;反过来,边缘正常也不能证明CDN回源的TLS连接正常。
域名不匹配与证书过期,要分开处理
如果有效期正常,仍有安全提示,应按具体错误检查证书是否覆盖访问主机名、服务器是否提供所需中间证书,以及客户端时间是否正确。跳转到另一个域名之前,浏览器可能已经需要与当前HTTPS域名完成TLS连接,因此不能靠跳转“绕过”入口域名的证书问题。
不要让访客关闭证书验证,也不要将“忽略错误后能打开”当作恢复。修复后的验收对象应是正常验证条件下的真实入口,包括询盘表单、后台和业务依赖的子域。
把续期任务和到期告警拆成两条检查
一条检查关注任务是否按期执行以及部署是否成功;另一条从外部观察实际提供的证书。两者由不同信号触发,才能发现“任务绿灯、线上旧证书”的落差。告警应带上主机名、剩余有效期、实际证书信息和处理人,不能只有一句“SSL异常”。
光算的域名与证书续费责任清单适合用来补齐账号、付款方式、提醒渠道和交接责任。技术团队可以在这份清单上再增加TLS终止位置、部署动作与外部验证记录,让值班人员知道该去注册商、证书工具还是CDN后台处理。
最终关闭事件前,保存本次公网读回结果,并确认下一次续期后的部署路径仍能执行。真正要持续维护的是“签发—部署—用户访问”这条链,而不只是一个定时任务的退出码。