OpenVPN 证书过期了?先检查时钟,再检查证书
时钟不准可能让有效的证书看起来已经过期。读清确切的 TLS 错误,找到失败的证书,并通过签发者续期。
客户端连接、协商一秒后报告某个证书已过期。在请任何人重新签发之前,先看看眼前设备的日期:休眠一个月的笔记本、手动设置时钟的手机、以及没有可用 NTP 源的路由器,都会向 TLS 栈报告错误的时刻。证书只在时间窗口内有效,而校验会把该窗口与本地时钟的说法相比。先把时钟调对,再判断问题是否真实存在。
从设备上的时钟开始
打开终端读取系统对 UTC 的认知,而不是桌面时钟小部件,它可能显示按时区调整过的视图,或 GUI 缓存的旧值。
date -u
timedatectl status时钟大幅超前会让有效证书看起来过期,大幅滞后则会让它看起来尚未生效,有些客户端会用同一个笼统的握手失败来报告。如果同步被关闭或时间源不可达,先修好它,并在改动任何文件前重新测试。把时钟往回拨以绕过到期并不是解决办法:它会破坏设备上的其他服务,并让身份问题原封不动地留在原处。
如果时钟正确,到期就是真实的,本指南其余部分适用。比较两台设备的时间戳之前,先注意客户端日志使用哪个时区。另一个时区的服务器可能让续期看起来偏早或偏晚,而实际两者都不是。要与客户端自己日志行中的时间戳比较,而不是桌上的挂钟。
先读错误行,再看配置文件
保留原文。OpenVPN 的验证失败会给出深度和原因,这两个字段告诉你该由谁行动。
VERIFY ERROR 与 error=certificate has expired 是链条中某一具体位置的效力失败。它 不是密码被拒,也不是超时,三者需要不同的应对。
把整行连同客户端版本抄进笔记。如果消息反而说证书尚未生效,你就回到了时钟问题。如果它说签发者未知,那是信任问题而不是有效期问题,任何续期都不会改变它。
找出是哪个证书过期了
深度零是你所连接对端出示的证书,更高的深度则走向根。工作 VPN 通常会让客户端身份或服务器证书到期,偶尔也会让组织忘记自己拥有的中间证书到期。
打印配置文件实际引用的那些文件的日期,从错误中所述深度的那一个开始。
openssl x509 -in client.crt -noout -subject -issuer -dates
openssl x509 -in ca.crt -noout -subject -dates如果配置文件以内嵌块的形式嵌入证书而不是指向文件,磁盘上的单独文件可能比客户端正在使用的更新或更旧,这就是为什么把错误与文件对应起来需要读配置文件,而不是看目录列表。
通过签发者续期
客户端证书由签发它的人替换,重置账户密码不会续期任何东西。工作连接请使用你们组织公布的续期渠道;对于托管服务,请通过经过验证的地址登录提供商的门户,而不是打开声称包含新配置文件的附件。未经请求的捆绑包不会仅因为文件名提到 VPN 就值得信任。
如果你运营服务器,在更换材料前先核对公开信息和签发记录,因为更换 CA 会影响所有信任它的客户端。
续期一个身份不应要求替换信任层级。如果有人提议用新 CA 来修复一个过期叶子,先问还有什么依赖旧的。双方遵循的模型 RFC 5280 是有效期与路径规则。
让客户端使用替换品
下载文件不等于导入它。检查你实际选择的连接条目,并检查配置文件是否引用了你忘记覆盖的外部证书路径。
在新条目连接成功之前保留旧条目可见,然后删除它,以免有人习惯性地选择过期配置文件。重新连接并确认那个具体的到期错误已经消失。
如果仍留下别的 TLS 错误,把它当作新问题,而不是削弱验证设置去绕过。续期成功后账户被拒或路由缺失是另一个故障,需要另行修复。