电脑上访问正常,部分手机提示连接不安全,抓包显示中间证书缺失。乍看像缓存或者权限的锅,追下去往往不是。

cat domain.crt intermediate.crt > fullchain.crt
# Nginx
ssl_certificate /etc/ssl/fullchain.crt;

追下去是这么回事:服务器只下发了站点证书,没有附带中间证书,客户端无法构建完整信任链。

碰到「证书链不完整」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

具体做法是,把中间证书拼到站点证书之后;用在线工具验证链完整性;重启服务复测。

验收就看一点,多端访问均无证书告警,链验证通过。

作者 9823189