You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

服务器SSL证书有效但客户端显示过期,如何排查解决?

我之前也碰到过一模一样的情况,折腾了好一阵才搞定,给你梳理下排查和解决的步骤,都是优先从配置和缓存角度出发的:

第一步:确认Nginx实际加载的证书是否正确

先别着急排查客户端,先把服务器端的核心问题钉死:

  • 直接验证你配置里指定的证书文件有效期,用这条命令:
    openssl x509 -in /etc/nginx/ssl/your_cert.pem -noout -dates
    把路径换成你实际的证书路径,看输出的notBefore和notAfter是不是最新的有效期——要是本地文件都不对,那先重新生成证书再说。
  • 如果本地证书是对的,再确认Nginx配置里的路径没写错:
    nginx -T | grep -E 'ssl_certificate|ssl_certificate_key'
    确保输出的路径和你更新后的证书完全一致,有没有可能手滑写错了路径,指向了旧证书文件?
第二步:检查Nginx配置的细节疏漏

这一步容易忽略一些不起眼的点:

  • 有没有多个server块绑定了同一个域名?比如一个负责HTTP转HTTPS的server,另一个是HTTPS的主server,是不是其中某个server块还在引用旧证书?
  • 看看是不是配置了过长的ssl_session_cache,如果会话缓存时间设置得太久,可能会导致客户端复用旧证书的会话。可以临时把ssl_session_timeout改成5m;,验证完再改回去。
  • 别忘了验证配置语法并重载Nginx:先跑nginx -t确保配置没语法错误,然后执行systemctl reload nginx(或者service nginx reload,看你的系统)——很多人更新证书后忘了重载,导致Nginx一直用旧证书,这是最常见的坑!
第三步:排查服务器端进程或中间缓存

有时候重载Nginx还不够,可能是进程没完全刷新,或者中间层缓存搞鬼:

  • 检查Nginx进程状态:ps aux | grep nginx,看看主进程和工作进程是不是都是最新的,有没有旧进程残留?如果有的话,直接重启Nginx:systemctl restart nginx
  • 如果你用了CDN或者反向代理,先去控制台检查它们的证书配置——是不是CDN端还缓存了旧证书?需要重新上传新证书,同时手动刷新CDN的全站缓存。
第四步:客户端及中间节点缓存排查

服务器端确认没问题后,就看客户端和中间环节:

  • 浏览器强制刷新缓存:Windows按Ctrl+Shift+R,Mac按Cmd+Shift+R,或者直接清空浏览器的"缓存的网页和文件"——别只刷新页面,普通刷新可能还是会用缓存。
  • 用命令行绕开浏览器缓存验证,比如:
    curl -v https://yourdomain.com 或者 openssl s_client -connect yourdomain.com:443
    看输出里的证书有效期,这样能直接确认服务器返回的证书是不是新的,排除浏览器缓存的干扰。
  • 如果是局域网内的问题,检查有没有网关、公司代理服务器缓存了旧证书,可能需要重启这些设备或者清空它们的缓存。
最后验证效果

做完上面的步骤后,换几个不同的设备、浏览器访问试试,也可以用在线SSL检测工具验证证书的有效期,确保所有节点都拿到了新证书。

内容的提问来源于stack exchange,提问作者JWL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:23:35