SSL证书突然失效,网站提示不安全的真实排查过程
今天检查网站的时候,发现一个比较影响用户信任的问题:浏览器访问网站时提示“不安全”。
网站本身还能打开,服务器也没有宕机,但是浏览器地址栏不再显示正常的小锁标识,而是提示证书异常。
这种问题表面上不像服务器故障那么严重,但对网站影响很大。尤其是做云服务器、IDC服务的网站,如果用户一打开就看到“不安全”,第一感觉肯定是不放心。
所以我第一时间开始排查。
一、问题出现时的表现
当时网站的情况是:
网站首页可以打开。
部分浏览器提示连接不安全。
地址栏小锁标识异常。
有些页面访问正常,有些页面提示证书风险。
后台可以登录。
服务器SSH可以正常连接。
从这些情况看,网站程序和服务器本身都没有明显故障。
问题重点应该在 HTTPS 证书、域名配置或者 Web 服务配置上。
二、第一步:先确认网站是否能访问
我先用浏览器访问网站首页,确认网站不是完全打不开。
页面能正常打开,说明 Nginx 服务和网站程序基本是正常的。
然后我又试了几种访问方式:
http://域名
https://域名
结果发现 HTTP 可以访问,HTTPS 会提示证书异常。
这说明问题集中在 HTTPS 层,而不是网站程序本身。
三、第二步:检查证书是否过期
证书异常最常见的原因,就是证书过期。
我先在浏览器里点击证书详情,看了一下证书有效期。
结果发现证书确实已经接近到期,部分浏览器已经开始提示风险。
如果服务器上有 openssl,也可以用命令查看:
openssl x509 -in /证书路径/fullchain.pem -noout -dates
如果显示的时间已经过期,或者快到期,就要马上重新申请或续签证书。
SSL证书不像普通文件,过期后浏览器会直接提示不安全,不会因为网站还能打开就自动忽略。
四、第三步:检查证书文件路径
证书过期是一种情况,但还有一种情况也很常见:
证书已经重新申请了,但 Nginx 还在使用旧证书。
所以我继续检查网站配置文件。
常见配置里会有类似内容:
ssl_certificate /www/server/panel/vhost/cert/域名/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/域名/privkey.pem;
这里要重点看两个路径:
一个是证书文件路径。
一个是私钥文件路径。
如果路径指向的是旧目录,或者证书文件没有更新成功,即使你已经申请了新证书,网站访问时仍然可能显示旧证书。
五、第四步:检查 Nginx 配置是否正常
修改证书路径后,不能直接重启服务,要先检查配置是否正确。
nginx -t
如果这里报错,说明配置文件有问题,不能贸然重启。
这次排查中,我发现证书路径是存在的,但证书内容并不是最新的。
也就是说,证书文件位置没错,但文件没有被正确替换。
这类问题在手动上传证书时比较容易出现。
比如只替换了证书文件,没有替换私钥文件。
或者证书和私钥不是同一套,导致 Nginx 加载后 HTTPS 仍然异常。
六、第五步:确认 CDN 或加速平台证书
这里还有一个很容易忽略的点。
如果网站用了 CDN、EdgeOne、云加速或者其他边缘加速服务,那么用户访问到的证书不一定是源站服务器上的证书。
这种情况下,需要同时检查两个地方:
源站服务器证书。
CDN平台上的证书。
如果源站证书是新的,但 CDN 上仍然绑定旧证书,用户访问网站时依然可能看到证书异常。
所以我又进入加速平台后台,检查域名绑定的 HTTPS 证书。
结果发现,源站证书已经更新,但加速平台上绑定的还是旧证书。
这就是这次问题真正的关键。
七、问题真正原因
这次 SSL 证书异常的真正原因是:
服务器源站证书已经更新。
但加速平台绑定的证书没有同步更新。
浏览器访问时拿到的是 CDN 节点上的旧证书。
旧证书接近过期或已经异常。
所以浏览器提示网站不安全。
也就是说,这次不是网站程序问题,也不是服务器宕机,而是 HTTPS 证书在加速平台和源站之间没有同步。
八、实际处理过程
确认原因后,我开始处理。
1. 重新上传最新证书
在加速平台后台找到 HTTPS 证书管理,把新的证书内容和私钥重新上传。
这里要注意:
证书文件和私钥必须是一套。
不要把不同时间申请的证书和私钥混着用。
2. 重新绑定域名证书
上传成功后,把新证书绑定到对应域名。
如果有多个域名,比如主域名和 www 域名,都要检查是否绑定正确。
3. 等待配置下发
CDN或边缘加速平台通常需要一点时间下发配置。
下发完成后,再重新访问网站测试。
4. 清理浏览器缓存再测试
有时候浏览器会缓存证书状态,所以测试时可以换浏览器,或者使用无痕模式访问。
九、恢复结果
处理完成后,我重新访问网站。
浏览器地址栏恢复正常。
小锁标识正常显示。
HTTPS访问不再提示风险。
网站前台和后台都可以正常打开。
然后我又测试了几个页面,确认不是只有首页恢复,而是整站 HTTPS 都正常。
十、这次问题的经验总结
这次 SSL 证书问题给我的提醒很明显。
如果网站使用了 CDN 或加速平台,证书排查不能只看服务器源站。
要同时检查:
源站证书是否过期。
Nginx证书路径是否正确。
证书和私钥是否匹配。
CDN平台证书是否同步更新。
域名是否绑定了正确证书。
很多时候,源站已经没问题,但用户访问的还是 CDN 节点上的旧证书。
如果只在服务器上反复重启 Nginx,是解决不了这个问题的。
十一、后续优化措施
为了避免以后再次出现类似情况,我做了几个调整。
第一,记录证书到期时间。
不要等浏览器提示不安全了才处理,证书快到期前就要提前续签。
第二,源站和CDN证书都要检查。
只要网站接入了加速平台,就不能只看服务器本地证书。
第三,证书更新后要完整测试。
包括首页、后台、接口、静态资源和 www 域名。
第四,证书文件要备份清楚。
不要把不同域名、不同时间申请的证书混在一起。
第五,修改 HTTPS 配置后一定执行:
nginx -t
确认配置没问题后,再重新加载服务。
写在最后
这次网站提示不安全,最终不是服务器故障,也不是网站程序异常,而是 SSL 证书在加速平台上没有及时更新。
对于站长来说,HTTPS证书虽然平时不常关注,但一旦出问题,对用户信任影响很大。
以后遇到网站提示证书异常,可以按这个顺序排查:
先看证书是否过期。
再看源站证书路径。
再看证书和私钥是否匹配。
最后检查CDN或加速平台证书是否同步。
一步一步查,比盲目重启服务器更有效。