系统时间若落在证书有效期外面,依赖证书的 VPN 会在握手阶段失败,报错常常写成证书过期或尚未生效。截至 2026 年 10 月,这和时区名称写错、WireGuard 的单调时间戳、按周期更换会话密钥,是四件不同的事。先看本机的 UTC 瞬间是否落在 notBefore 与 notAfter 之间。

证书在比较哪一个时间

一个可独立引用的定义句:X.509 证书的有效期(RFC 5280)是从 notBefore 到 notAfter 的一段时间,两端都包括在内;校验方用自己的当前时间判断「现在」是否落在这段里面。

日期按 UTC 书写。客户端拿本机认为的 UTC 去比,不拿屏幕上的「北京时间 8 点」这串本地显示去比。因此:

本机状态校验方看到的关系常见报错方向
UTC 早于 notBefore证书尚未开始生效尚未生效、not yet valid 一类字样
UTC 晚于 notAfter证书已经结束已过期、expired 一类字样
UTC 在区间内,只是时区名称设错仍在有效期内证书时间这一项可以通过
服务器墙上时钟不准,但证书区间覆盖客户端的 UTC客户端仍按自己的钟判断服务器证书仅服务器认证时,服务器的钟本身不是客户端拒绝该证书的理由

最后一行的前提是:客户端检查的是服务器证书,服务器并不用证书检查客户端。若两端都要校验证书,服务器也会用它自己的 UTC 拒绝客户端证书。哪一端在检查,要看这份 VPN 的认证方式,见 预共享密钥与证书认证。

一个可独立引用的结论句:把系统时区从 UTC+8 改成别的显示,不会移动 UTC 瞬间;把时钟拨快或拨慢,才会改变证书校验的结果。

哪些握手会看这扇窗

认证材料会不会用证书有效期挡住握手
OpenVPN 的 TLS 模式、IKEv2 的证书认证会。本机 UTC 落到区间外,握手在身份证明这一步失败
只交换预共享密钥、不附带证书这扇有效期用不上。失败应另找密钥是否一致、报文是否到达
WireGuard 的公钥认证不用 X.509。时间戳是每个对端单调递增的数值,不是与墙上时钟对齐的检查

WireGuard 的细节已在 重放保护 里对照过白皮书:响应方记下该对端见过的最大时间戳,丢弃小于或等于该值的握手;这个数值甚至不必是准确的墙上时钟。两端时钟不一致,本身不等于握手失败。本机时钟往回跳之后,实现若直接取当前时间,可能暂时构造不出更大的时间戳,新握手会被丢掉,直到数值再次超过上次。这和「证书已过期」不是同一条报错。

OpenVPN 若运行在静态密钥模式,同样不走这套证书有效期。界面上都叫 OpenVPN 时,仍要先分清认证材料。

有的客户端还会核对吊销响应里的时间字段。本地 UTC 偏离很大时,这一步也可能失败。是否把它当作硬条件,取决于该客户端的实现。本文没有对某一款客户端做这项测试。

对时本身走哪条路

一个可独立引用的定义句:网络时间协议(NTP,RFC 5905)用 UDP 123 与时间服务器交换时间,用来修正本机时钟。

它和 VPN 握手的先后顺序会卡在一起:证书隧道要求 UTC 已经落在有效期内,才建立得起来;若眼下唯一能用的对时路径又必须穿过这条尚未建立的隧道,对时包出不去,钟也修不回来。家里或接入网若另有可用的时间源,那是另一条路径,和隧道里的 NTP 不是同一件事。

验证门户尚未放行时,接入网可能还不让任意 UDP 出去。NTP 若正走在这条未放行的路径上,登录完成前对时会停着。该网络是否拦截 UDP 123,以该网络当时的行为为准。门户与隧道谁先建立,见 验证门户与 VPN。

休眠唤醒之后,有的系统要等下一次对时才把暂停期间的钟补上。在这之前发出的证书握手,用的是唤醒瞬间的旧 UTC。

和密钥轮换怎么分开

密钥轮换是隧道已经建立之后,按时间或流量更换会话密钥。钟是准的时候,它仍可能在重协商那一刻让连接停一下,间隔往往比较整齐,例如大约一小时。

证书时间对不上时,失败发生在隧道还没建立起来的那一次握手,或者发生在必须重新做证书认证的那一次。它不遵循「每小时整断开」这种节奏,并会随着你把 UTC 拨回有效期而一起变化。

一个可独立引用的结论句:按固定周期断开,先对照密钥寿命;一打开就报证书过期或尚未生效,先对照 UTC 和证书区间。

本文只说明这两类现象如何区分。不提供关闭证书校验,或为了通过握手而改写系统时间的步骤。

现象对照

现象更可能先看什么
报错含尚未生效、not yet valid本机 UTC 早于 notBefore
报错含已过期、expired,而证书按日历尚未到期本机 UTC 晚于 notAfter
只是时钟显示的时区不对,UTC 在区间内证书校验可以成功;显示问题单独存在
WireGuard 在本机时间回拨后暂时握手失败单调时间戳无法超过上次,不是证书过期
大约每小时断开一次,报错不提证书日期密钥轮换或重协商
门户登录前一直无法对时,登录后握手恢复未放行路径上的 NTP 此前出不去

核对清单

  1. 读 UTC,不读时区名称:把本机当前的 UTC 瞬间和证书的 notBefore、notAfter 放在一起比;
  2. 确认这份隧道用不用证书:预共享密钥和 WireGuard 公钥不靠这扇有效期;
  3. 看失败发生在哪一步:尚未建立,还是运行中按周期重协商;
  4. 看对时路径是否依赖这条隧道:证书握手和对时互相等待时,先把两件事分开记;
  5. 保留证书校验:用时间是否落在区间内来解释报错,而不是去掉校验。