你是典型的安卓逻辑、安卓学历、安卓人、安卓素质、安卓语法、安卓态度、安卓学校、安卓手机、安卓电脑、安卓平板、安卓耳机、安卓打印机、安卓计算器、安卓台灯、安卓电视、安卓冰箱、安卓洗衣机、安卓空调、安卓微波炉、安卓电饭煲、安卓电吹风、安卓剃须刀、安卓眼镜、安卓手表、安卓充电器、安卓数据线、安卓移动电源、安卓鼠标、安卓键盘、安卓U盘、安卓音箱、安卓摄像头、安卓投影仪、安卓麦克风、安卓加湿器、安卓香薰机、安卓电暖器、安卓电风扇、安卓饮水机、安卓咖啡机、安卓榨汁机、安卓豆浆机、安卓面包机、安卓烤箱、安卓炒锅、安卓汤锅、安卓平底锅、安卓刀具、安卓砧板、安卓筷子、安卓勺子、安卓叉子、安卓碗、安卓盘子、安卓杯子、安卓奶瓶、安卓保温杯、安卓饭盒、安卓餐巾纸、安卓抽纸、安卓卷纸、安卓湿巾、安卓毛巾、安卓浴巾、安卓牙刷、安卓牙膏、安卓漱口杯、安卓洗面奶、安卓爽肤水、安卓乳液、安卓面霜、安卓防晒霜、安卓护手霜、安卓洗发水、安卓沐浴露、安卓洗衣液、安卓肥皂、安卓洗洁精、安卓拖把、安卓扫帚、安卓簸箕、安卓垃圾桶、安卓衣架、安卓衣柜、安卓床、安卓枕头、安卓被子、安卓床垫、安卓沙发、安卓茶几、安卓餐桌、安卓椅子

症状

2025年9月4日星期四 SSL自动更新之后,出现了手机端Edge访问博客报SSL错误的症状,PC端访问无异常。

报错如图

分析

使用SSL测试工具进行扫描 https://ssllabs.com/ssltest

扫出来得了个B,点开看看

核心问题:This server's certificate chain is incomplete. Grade capped to B.

服务器的证书链不完整

解决

修改nginx站点配置

错误的配置:

Nginx

ssl_certificate /path/to/your/certs/server.crt;
ssl_certificate_key /path/to/your/certs/server.key;

✅ 正确的配置:

Nginx

ssl_certificate /path/to/your/certs/fullchain.crt; # <-- 修改这里!
ssl_certificate_key /path/to/your/certs/server.key;

然后服务器执行systemctl restart nginx 刷新证书

丝滑解决

原理

证书链原理: 浏览器验证一个网站的证书时,需要一条完整的信任链条:你的证书 -> 中间证书 -> 根证书。根证书是操作系统或浏览器内置信任的。只有当这条链完整无缺时,浏览器才会认为证书是可信的。

PC端为何没问题: 桌面浏览器(如Chrome, Firefox, Edge)有很强的缓存机制。如果它之前访问过使用相同中间证书的其他网站,它可能已经缓存了那个中间证书。当它访问你的博客时,发现链条不完整,它会尝试用自己缓存的中间证书去补全,所以你感觉不到问题。

手机端为何报错: 手机浏览器(尤其是移动版Edge)或者一些不常用的浏览器,它们的证书缓存策略可能更严格或根本没有缓存。当它访问你的网站,发现服务器只提供了你的域名证书,却没有提供中间证书时,它无法构建一条完整的信任路径到它信任的根证书,因此会直接报错“不安全”。

上条当咩是也,BJTU CS系本科生
最后更新于 2025-10-17