下午刚装完证书,客户就发来截图:绿锁呢?地址栏还是“不安全”。技术这边明明每一步都按流程走了,怎么浏览器还不买账?这类“装了等于白装”的情况其实很常见,SSL证书安装完成只是及格线,浏览器认不认,还要过好几道关。
头号嫌疑:页面里的http资源
证书装好了,但页面上还挂着http开头的图片、CSS或者第三方脚本,浏览器一样会给黄色警告,这叫混合内容。老站尤其容易中招,文章正文里贴了几百张http图床的图片,模板里写死了http的统计代码。处理办法要么把资源全部改成https,要么在模板层做相对路径,个别实在改不动的老资源,加一层协议自动跟随。
更憋屈的是,这些原因没一个跟证书本身有关——证书是好的,坏的是页面和环境。我们还遇到过最冤的一次:报警原因是某张老图片的图床域名过期被人抢注,把链接换成新地址才消停。遇到报警别急着怀疑证书,把页面里的每一类资源过一遍,答案往往藏在最不起眼的地方。
判断混合内容有个笨但可靠的办法:浏览器按F12打开控制台,刷新页面,所有http资源会被逐条标红,一处不落。改完再刷新,红线消了,绿锁基本就稳了。别用肉眼翻代码,几百个请求靠人眼找协议前缀,找到天黑也找不完。
其他几个常见原因
- 证书链不完整:服务器只部署了域名证书,缺中间证书,桌面Chrome看着正常,安卓和部分海外浏览器直接报错
- 服务器时间不对:时间偏差太大,浏览器认为证书“尚未生效”,这种低级问题在新装系统的小主机上出现过
- 缓存捣乱:浏览器和CDN把旧的http页面缓存着,清缓存、强刷一遍再下判断
- 没做强制跳转:直接访问http不跳https,访客看到的就是不安全版本
顺便提一句老环境:有些站用的面板版本太老,连TLS1.2都没开,证书装得再对,手机浏览器照样拒绝连接。这种就要升级环境了,不是换证书能解决的。
一条一条排除,别瞎猜
我们的排查顺序固定:先用在线检测工具扫一遍证书链和协议配置,再开无痕窗口访问看资源加载,接着查控制台里的混合内容报错,十分钟内基本能定位,比换来换去改配置靠谱。SSL证书安装完成后当场用电脑、安卓、苹果三台设备开一遍,能把九成问题在交付前拦住。
另有一类“时有时无”的报警最难缠,多半是个别页面里埋着http资源,首页测不出来,点进某篇老文章才炸。全站爬一遍链接,或者用检测工具扫混合内容,能把这类钉子全找出来。
建议
装完证书别只看首页,文章页、列表页、后台登录页都要点开确认。没有技术同事盯交付验收的,可以交给比格网络装,我们按全站页面检测的标准交付,绿锁亮不稳不出验收单。