先说一个能直接分流的判断:是只有这一个网站报错,还是所有加密网站都报错。前者基本是对面的问题,后者一定在你自己机器或者网络上。两个方向的处理完全不同。
按错误代码分流
| 错误代码 | 真实含义 | 优先怀疑 |
|---|---|---|
| ERR_CERT_DATE_INVALID | 证书不在有效期内 | 先看本机时间,再看站点 |
| ERR_CERT_AUTHORITY_INVALID | 签发者不受信任 | 自签证书,或者本机被插入根证书 |
| ERR_CERT_COMMON_NAME_INVALID | 证书上的域名与当前不对 | 配置错,或者强制门户登录页 |
| ERR_CERT_REVOKED | 证书已被吊销 | 当真,不要继续 |
| ERR_SSL_PROTOCOL_ERROR | 握手失败 | 代理或者中间设备干扰 |
点开提示页上的“高级”或者“详细信息”就能看到具体代码。只看中文提示无法判断,因为四种原因被归在同一句话里。
关键一步:确认问题在你这边还是对方那边
按顺序做两个测试:
- 换一家一定正常的站:打开一个大型网站的主页。如果它正常,问题在那一个站;如果它也报错,问题在你机器上。
- 换网络:用手机热点或者移动数据打开同一个网址。手机正常而电脑不正常,说明是电脑本机;两边都不正常,说明是那个站或者这个网络。
这两个测试比任何工具都准。下面两条分开讲。
只有那个站报错:三种常见情况
站点证书真的过期了
小型网站、自建服务、校内系统居多。它的表现很固定:所有浏览器、所有设备、任何网络下都报,且错误里写着日期无效。你可以看证书详情里的有效期字段确认。
这类情况可以点继续,但前提是你确实需要那个内容、而且不输入任何密码与支付信息。过期证书意味着没人为对方身份担保,也不意味着你的内容会被明文传递。
域名不匹配
证书上写的域名和你输入的域名不是同一个。典型例子是用 IP 地址访问、或者访问镜像站。这一类风险高于过期,因为它可能意味着你在一个真的假站上。
强制门户登录页
酒店、机场、公司访客网络的登录页会伪装成你要访问的站。它的证书往往不对。判断方法:换一个纯 http 的网站试试,如果直接被重定向到一个登录页面,那报错就是这个原因,先登录再继续。
所有加密站都报错:一定是本机或者网络
这一类不要再看那个站,直接查自己。四个候选原因按出现频率排:
一、系统时间不对。 CMOS 电池没电的机器很常见,时间回到几年前,所有证书看上去都还没生效或者已经过期。先看日期,这一步十秒。
二、本机有代理或者中间设备。 抓包工具、某些上网加速软件、公司发的电脑预带的审计代理都会造成这个结果。查一下当前代理设置是否你本人配的。
三、根证书存储里被插东西。 这是最需要注意的一项,因为它意味着你所有的加密流量都可能被解开。看一下非微软签发、你自己又没有主动装过的根证书。
查这几项的命令:
Get-Date
netsh winhttp show proxy
Get-ItemProperty HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings |
Select-Object ProxyEnable, ProxyServer, AutoConfigURL
# 根证书里非微软签发、且自己没主动装过的项
Get-ChildItem Cert:\LocalMachine\Root |
Where-Object {$_.Issuer -notlike '*Microsoft*'} |
Select-Object Subject, NotAfter
第四条输出很长,全部列出是正常的。要盯的是两类: issuer 与你完全无关的公司名,以及有效期异常的项。如果你装过抓包工具或者公司发的电脑,那看到对应的根证书是预期行为。
路由器或者 DNS 在捣乱
如果本机三项都正常,但所有站都报错,拿手机连同一个 WiFi 测一次。手机也报错说明是路由器或者运营商层面的东西;手机正常而电脑不正常,说明还是电脑本机。
两个常见错法
- 不要为了“解决证书报错”去装任何根证书修复工具或者一键清理浏览器。它们本身就是往根证书存储里写东西的程序。
- 不要把报错当成病毒处理。证书报错绝大多数是时间、代理、或者对面站点配置的问题,与安全软件无关。
最后一句
处理这个提示只看一件事:一个站报还是所有站报。一个站报,判断你对那个站有多少信任、要不要输入敏感信息;所有站报,先查时间、代理、根证书三项。在两者之间选错方向,就会花半天时间去修一个其实只是对面证书过期的问题。