|
浏览器地址栏左边那个灰色小锁,网页上面划了一道斜杠,开显有时候还带个红色叉号——这玩意儿一出来,示个锁和页面要么直接白屏,灰色要么弹出一句“您的叉号连接不是私密连接”。别急着骂网站,网页问题多半出在证书上。开显 我上周就撞见一回。示个锁和公司内部测试环境,灰色域名是叉号 test-api.internal.company.com,运维图省事,网页直接用了自签名的开显 SSL 证书。Chrome 打开,示个锁和灰色锁加叉号,灰色点“高级”才给一个“继续前往”的叉号链接。点进去之后,地址栏那个锁变成红色,旁边写着“不安全”。同事问我是不是被黑了,我说不是,就是证书没被信任。 灰色锁和叉号,跟红色锁是两码事。灰色通常意味着证书链不完整,或者根证书不在系统信任库里。红色更严重,可能是证书过期、域名不匹配,或者被中间人攻击了。浏览器把灰色锁做得这么不起眼,其实是故意的——它不想吓唬你,但也不想让你以为一切正常。 为什么会出现灰色锁?最常见的原因:网站用了自签名证书。开发环境、内网系统、路由器管理页面,十有八九都是自签的。浏览器不认识签发者,自然不信任。第二个原因:证书链缺了中间证书。服务器只发了自己的证书,没发中间 CA 的证书,浏览器拼不出一条完整的信任链。第三个原因:系统根证书库太旧,或者被某些安全软件替换过。 有个细节挺有意思。Firefox 和 Chrome 对灰色锁的处理不一样。Firefox 会在地址栏直接显示“不安全”三个字,Chrome 只给一个灰色锁加叉号,鼠标悬停才提示“证书无效”。Safari 更狠,直接弹窗问你要不要继续。同一个网站,不同浏览器给出的警告级别不同,说明“不安全”这件事本身也有程度之分。 怎么判断是网站的问题还是你自己的问题?换一个浏览器试试。如果 Edge 也报错,那基本是网站证书有问题。如果只有 Chrome 报错,可能是 Chrome 的证书缓存乱了,清一下 chrome://settings/certificates 里的缓存就行。再不行,检查系统时间。时间不对,证书有效期校验一定失败。我见过一台虚拟机时间停在 2019 年,所有 HTTPS 网站全挂。 对于普通用户,看到灰色锁加叉号,最安全的做法是关掉页面。除非你明确知道这是内网系统,而且管理员告诉你“点继续访问”。千万别在灰色锁的页面上输入密码或银行卡号。浏览器已经告诉你“我不确定这个网站是谁”,你非要填表单,那就是自己往坑里跳。 对于开发者,别把自签名证书扔到生产环境。Let's Encrypt 免费证书三分钟就能搞定,自动续期也不难。实在要用自签,至少把根证书装到所有客户端的信任库里。我见过一个团队,内网系统用了自签证书,结果每次新员工入职都要手动导入根证书,IT 部门怨声载道。后来换成了内部 CA 签发的证书,一次性解决。 灰色锁加叉号不是 bug,是浏览器在尽职尽责地告诉你:这条连接的身份验证没通过。你可以选择忽略,但最好知道自己在忽略什么。 |