售前咨询400-838-0503

SSL证书更新后仍过期怎么办?

发布:2026-10-26 14:29

搜索全部帮助分类的文档

在面板中更新SSL证书后,浏览器仍然提示证书过期,常见原因包括:更新了错误的文件、服务没有重新加载,或者访问流量实际经过了另一台服务器或CDN。

排查时,应先确认访问者收到的是哪张证书,再检查它对应的部署位置。

本文以Linux和Nginx环境为例。域名、IP、文件路径及容器名称均为示例,请替换为实际值。

1. 查看网站实际返回的证书

在能够访问网站的Linux电脑或服务器上执行:

timeout 15s openssl s_client -connect example.com:443 \
  -servername example.com </dev/null 2>/dev/null |
  openssl x509 -noout -dates

正常情况下会显示:

notBefore=Sep 25 00:00:00 2026 GMT
notAfter=Oct 25 00:00:00 2026 GMT

其中:

  • notBefore:证书开始有效的时间。

  • notAfter:证书到期时间。

  • GMT:按UTC理解,与北京时间相差8小时。

-servername用于发送TLS SNI,让服务器选择对应域名的证书。同一IP部署多个HTTPS网站时,这一步很重要。

该命令只是读取证书信息,不代表证书链和域名校验已经通过。

如果无法读取证书,可去掉2>/dev/null查看连接错误,再检查域名解析、443端口及TLS服务。

使用OpenSSL查看网站实际返回的SSL证书有效期

2. 检查本地证书文件

在部署网站的服务器上,读取准备使用的新证书:

sudo openssl x509 \
  -in /etc/nginx/ssl/example.com/fullchain.pem \
  -noout -dates -ext subjectAltName

检查有效期,以及Subject Alternative Name中是否包含实际访问的域名。

不要只根据文件修改时间判断是否更新成功,证书本身的有效期才是依据。

将本地结果与第1节对比:

检查结果 排查方向
本地和线上都还是旧证书 检查续期结果及实际更新的文件位置
本地已更新,线上仍返回旧证书 检查加载路径、重载结果及访问入口
证书有效,但没有覆盖访问域名 重新核对申请域名与站点绑定
只有部分访问者收到旧证书 检查多节点、IPv6、CDN及解析差异

证书文件存在多个副本时,需要找到服务实际读取的那一份。

使用OpenSSL检查本地SSL证书有效期与覆盖域名

3. 核对Nginx配置中的证书路径

查看Nginx配置文件的展开内容:

sudo nginx -T

找到目标站点对应的server配置,重点检查:

server_name example.com www.example.com;

ssl_certificate     /etc/nginx/ssl/example.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/example.com/privkey.pem;

确认以下内容:

  1. 域名匹配正确的站点配置。

  2. ssl_certificate指向已经更新的证书。

  3. ssl_certificate_key与该证书匹配。

  4. 同一域名没有被其他监听配置意外接管。

如果使用宝塔、OpenResty或自定义安装,应使用实际运行实例对应的程序和配置文件,避免检查了系统中另一套Nginx。

nginx -T展示的是磁盘上的配置内容;如果修改后没有成功重载,运行中的服务可能仍然使用旧配置。

另外,Nginx使用的证书链文件应先放站点证书,再放所需中间证书。只更新站点证书而遗漏中间证书,也可能导致部分客户端校验失败。

4. 检查CDN、多节点和IPv6入口

如果网站接入了CDN、WAF或负载均衡,浏览器建立TLS连接的位置可能在这些入口。

只更新源站证书,不一定会更新访问者看到的入口证书。

应分别检查:

部署位置 核对内容
CDN或WAF 对外域名绑定的证书是否更新
负载均衡 HTTPS监听器使用的证书是否更新
多台Web服务器 每台节点是否都已部署新证书
IPv4和IPv6入口 两类地址是否指向不同服务或节点

已经安装dig时,可以查看域名地址:

dig +short example.com A
dig +short example.com AAAA

针对某个具体IPv4地址测试,同时保留域名SNI:

timeout 15s openssl s_client -connect 203.0.113.10:443 \
  -servername example.com </dev/null 2>/dev/null |
  openssl x509 -noout -dates

测试IPv6地址时,连接地址应写成:

[实际IPv6地址]:443

CDN入口和源站可以使用不同证书,只要各自满足对应连接的校验要求,不必强求两张证书完全相同。

5. Docker部署检查容器内的文件

如果Nginx运行在Docker容器中,需要确认更新后的证书确实能够被容器读取。

查看挂载关系:

docker inspect nginx --format '{{json .Mounts}}'

查看容器内的Nginx配置:

docker exec nginx nginx -T

将nginx替换为实际容器名称。

重点检查:

  • 宿主机更新目录是否就是容器挂载来源。

  • 容器内配置的证书路径是否正确。

  • 文件权限是否允许Nginx读取。

  • 证书使用符号链接时,链接目标是否也能在容器内访问。

  • 是否只更新了宿主机文件,却遗漏了容器中的独立副本。

如果镜像内安装了OpenSSL,可以按第2节的方法检查容器内实际读取的证书。

不要只凭宿主机文件已更新,就判断容器服务已经生效。

6. 检测配置、重载并复测

确认路径、证书和私钥正确后,按部署方式选择对应操作。

对于由systemd管理、服务名为nginx的环境:

sudo nginx -t && sudo systemctl reload nginx

对于容器内的Nginx:

docker exec nginx nginx -t &&
docker exec nginx nginx -s reload

自定义配置路径或面板部署,应使用对应实例的检测和重载方式。

如果检测失败,先处理证书格式、路径、权限或私钥匹配问题。不要继续重载,也不要通过降低私钥权限要求来绕过错误。

重载后,重新执行第1节命令,通过新连接确认线上有效期已经更新。

随后校验证书链和域名:

timeout 15s openssl s_client \
  -connect example.com:443 \
  -servername example.com \
  -verify_hostname example.com \
  -verify_return_error -brief </dev/null

应确认输出没有证书验证错误,并结合浏览器和实际业务再次测试。内部CA签发的证书,需要在客户端正确配置信任链。

Nginx重载失败时可能继续使用旧配置,因此不能只看到服务仍在运行,就认为新证书已经加载。

Nginx重载后重新检查网站SSL证书到期时间

7. 检查自动续期后的部署流程

如果本次手动处理后恢复,还需要检查下次续期能否自动生效。

使用Certbot管理证书时,可以查看:

sudo certbot certificates

核对证书名称、域名、有效期和证书路径。

需要测试续期流程时,可以针对实际证书名称执行:

sudo certbot renew --cert-name example.com --dry-run

--cert-name应填写上一条命令显示的证书名称,它不一定与域名完全相同。

测试会按现有验证插件及部分钩子运行,可能涉及Web服务重载或既有停启操作,执行前应确认当前配置。

还应检查续期成功后是否完成:

  • 将证书部署到服务实际读取的位置。

  • 同步需要更新的其他节点或入口。

  • 检测配置并重载对应服务。

  • 从外部重新验证在线证书。

Certbot的部署钩子可用于成功签发或续期后的操作。普通--dry-run默认不会执行部署钩子,所以续期测试通过,不等于整套部署流程都已验证。

优先检查已有续期任务和日志,避免重复添加多个任务。

8. 注意事项与常见问题

清理浏览器缓存能解决吗?

如果服务器仍然返回旧证书,清理缓存无法修复服务端部署。应先用新连接确认线上证书,再排查浏览器会话或客户端环境。

本地证书有效,为什么仍提示过期?

可能访问了其他入口,也可能是证书链中的其他证书异常。应查看完整验证错误,而不只是站点证书的到期时间。

为什么有些设备正常,有些设备报错?

可能与访问路径、IPv4/IPv6、客户端系统时间、信任库或证书链完整性有关。应对比出问题设备实际收到的证书。

证书更新后需要重启整台服务器吗?

通常不需要。对于常见Nginx部署,在证书和配置正确后重载对应服务即可,但必须复测实际入口。

操作时需要注意什么?

  • 修改前备份现有配置及证书文件,并保护备份中的私钥。

  • 不要将私钥上传到公开查询网站或随日志发送。

  • 不要通过跳过证书验证来判断问题已经修复。

  • 多节点和多入口部署应逐一验证。

  • 查看日期时,同时确认客户端系统时间正确。

如果排查后仍未恢复,可向莱卡云技术支持提供访问域名、故障时间、部署方式、在线证书有效期和脱敏后的错误信息,便于定位实际返回旧证书的位置。

按文档操作后还是不行,把机器编号、出问题的时间点和现象截图一起提工单,能少来回一轮。

提交工单