好几个网站同时提示证书有问题,页面打不开,这种情况里绝大多数不是网站出事了,而是这台电脑的时间不对。先用两行命令确认,再决定要不要往下排查。
时间和证书有什么关系
每张 HTTPS 证书都写着生效时间和到期时间。浏览器拿到证书后,是拿你电脑上的当前时间去比对这两个值,而不是拿真实时间去比对。所以只要本机时间落到了生效时间之前或到期时间之后,一张完全正常的证书也会被判为无效;反过来,把本机时间调到几年前,那些早已作废的证书反而看起来还在有效期里。
同一件事还会连带影响两个地方:一次性验证码靠手机和服务端的时间对齐,差上一分钟就可能一直提示码错;Windows 更新和部分软件商店也会因为时间异常拒绝连接。
先查这三处
看一眼任务栏的日期、时间和年份,年份错最常见于长期断电或者搬动过的台式机。然后在电脑上执行:
Get-Date
Get-TimeZone
w32tm /query /status
第一条看当前时间,第二条看时区,第三条的返回里有最近一次同步时间和时间源。时区错和时钟错是两回事:时区错只影响显示,不会导致证书报错;真正引发证书问题的是绝对时间偏了。
在设置里同步一下就行吗
正常情况下可以。设置 → 时间和语言 → 日期和时间,打开“自动设置时间”,点“立即同步”。如果点了没反应,或者同步后过一会儿又飘回去,就换命令行:
Set-Service W32Time -StartupType Automatic
Start-Service W32Time
w32tm /resync
这三行分别是把时间服务设为自启动、启动它、强制同步一次。企业电脑不要手动执行这一组:域环境里的时间由域控统一提供,改了以后会造成账号登录和凭据校验的奇怪故障,交给管理端处理。
提示没有可用时间源时
如果 w32tm /resync 报找不到时间源,说明配置里没写可用地址或者服务被改过。这时重新指定一个再重启服务:
w32tm /config /manualpeerlist:time.windows.com /syncfromflags:manual /update
net stop w32time
net start w32time
后两行是重启时间服务,缺了这两行上一行不生效。校园网和公司内网经常屏蔽时间同步用的端口,同步不上不代表本机有故障。
每次断电就回到几年前
这是主板上的小电池没电了,典型表现是彻底断电一段时间后再开机,时间退回到一个固定的旧年份,进系统改对了、下次断电又重来。换一颗 3V 锂纽扣电池即可,型号以 CR2032 最常见(拆机前先关机断电,部分笔记本的电池位置不好找,得查一下自己型号)。换完之后先开机进固件设置页把时间改对,再进系统,不然每次开机都要重新对一遍。
时间已经对了,证书还是报错
这时候才轮到另外三条原因。一是本机信任的根证书列表太旧,多见于多年没更新的系统,先把更新补上。二是公司代理或者安全软件在做内容过滤,它会用自己的证书重新签发一份,报出来的颁发者并不是网站本身,这属于正常的过滤而不是攻击。三是只有某个网站报错而其他网站正常,那大概率就是该站自己的证书到期或者配置错,与你无关,换浏览器确认一次就行。