图片域名在 iOS 和桌面 Chrome 正常,部分安卓机和微信内置浏览器图片全裂,提示证书链不完整,换 WiFi 也一样。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

openssl s_client -connect img.example.com:443 -showcerts < /dev/null
# 看输出里有几段证书

服务器只下发了站点证书,没有带中间 CA,安卓的信任库不会自动补链。桌面浏览器缓存过中间证书,看起来就正常。这一点先确认清楚,后面就不用反复试。

碰到「图片域名证书链」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

具体做法是,用 openssl 拉一遍完整链,确认中间证书是否缺失;把中间证书按顺序拼进 fullchain 文件,重启服务;在安卓真机和微信里各开一次,别只用桌面浏览器验证。

改完照着核一遍,openssl 输出里能看到站点证书和中间证书两段,安卓端图片正常显示。

作者 9823189