在 OpenSSL 错误队列不为空时,每次重新加载 CRL 都会出现错误"CRL: 无法从文件中读取 CRL"
作者: linuxkd创建于 2026年9月10日更新于 2026年9月10日
□ 总结
'后端 tls ctx reload crl ()' (src/openvpn/sl opensl.c) 决定CRL文件是否通过检查‘ERR peek error ()'而到达尾端. ‘ERR peek error ()' 返回线条上最旧的* 错误' OpenSSL 错误队列,函数在读取前从未清除队列. 如果同一握手状态中较早的操作留下了出错的队列,上一首CRL之后的干净的EOF会被错误地归类为读取失败:一个‘M WARN'"CRL:不能从文件中读取CRL"被记录,队列(无关)OpenSSL错误被打印出来,已经解析过的CRL随即被安装("CRL:从文件中装入1 CRL"). 警告为虚假阳性;执行不受影响.
□ 版本/ 环境
- OpenVPN 2.7.0 arch64-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [LZO] [EPOLL] [PKCS11] [MH/PKTINFO][AEAD][DCO] (Ubuntu 26.04 包 'openvpn 2.7.0-1ubuntu 1.2')
- OpenSSL 3.5.5(2026年1月27日)
- Linux 7.0.0-1012-AWS,在使用中的ovpn-dco
- 服务器模式、
tls-server ' 、tls-crypt-v2 force-cookie'、tls-version-min 1.3'、temo-cert-tls客户端'、crl-验证crl.pem'(文件,一个PEM CRL)、动词3' - 代码:
release 2.7' src/openvpn/ssl opensl.c;后端 tls ctx reload crl()',1395行,1441行EOF试验;自2026-09-10起,`master'(1325/1371行)相同。
□ 复制步骤
- 运行一个使用
crl-核实 < file>' 的服务器,其中 *\ file>` 是一个由配置的 CA 签名的有效 PEM CRL(一个 CRL 足够了;两个相接的同样情况). - 让客户端连接(任何客户端;我的情况下排队出错出现在OpenSSL 3.5下的正常握手处理中).
- 将 CRL 文件替换为新副本,使其m时间或大小有变化(例如,相同的内容被重新下载,并在原子上重新命名为正位).
- 有客户(重新)联系。
□ 预期
只重新装入日志 :
CRL: 从文件/etc/openvpn/server/crl.pem上装入 1 CRL□ 实际
每次文件更改后第一次握手( 3次尝试; 没有文件更改从不握手; 在守护进程开始时, 队列为空) :
udp4:10.241.0.50:41567 OpenSSL:出错:0308010C:数字信封常规::不支持:全球默认库上下文,算法(无:0),属性(<null>)
udp4:10.241.0.50:41567 OpenSSL:错误:0480006C:PEM 常规 : 无起始行 :
udp4:10.241.0.50:41567 CRL:无法从文件/etc/openvpn/server/cl.pem读取 CRL
udp4:10.241.0.50:41567 CRL:从文件/etc/openvpn/server/crl.pem中装入1个CRL第一条`OpenSSL:'线是早先在同一次握手中发生的一个站不住脚的错误,与CRL无关。 第二个是“PEM read bios-509 CRL()”的真正EOF标记。 CRL被装入(Counter 1),一个被吊销的客户端在CRL中列出的序列随后立即被正确拒绝("VEIFY ERROR:深度=0,错误=证书被吊销"),所以行为是化妆品. 这对操作员和任何在“不能读 CRL”字符串上发出警报的人都是误导的,这是自然的 . . . . . . .
内容来源: OpenVPN/openvpn