问题描述
部署的openvpn,提供给员工访问内网使用;使用了大约大半年,一直很稳定,上周使用的时候,客户端连接不上了,显示一直重新连接(截图没有及时保留),重启了openvpn服务也不行。
排除了客户端和服务器之间的网络问题,排除了客户端问题(因为发现所有的客户端连接都是这个问题),目标指向了服务端;
问题排查
查看服务端日志,发现异常:
Fri Sep 22 14:58:11 2023 TCP connection established with [AF_INET]36.5.145.85:49977
Fri Sep 22 14:58:12 2023 36.5.145.85:49977 TLS: Initial packet from [AF_INET]36.5.145.85:49977, sid=d05e0a39
Fri Sep 22 14:58:12 2023 36.5.145.85:49977 WARNING: Failed to stat CRL file, not (re)loading CRL.
Fri Sep 22 14:58:12 2023 36.5.145.85:49977 VERIFY ERROR: depth=0, error=CRL has expired: CN=xuyubing
Fri Sep 22 14:58:12 2023 36.5.145.85:49977 OpenSSL: error:14089086:SSL routines:ssl3_get_client_certificate:c
Fri Sep 22 14:58:12 2023 36.5.145.85:49977 TLS_ERROR: BIO read tls_read_plaintext error
Fri Sep 22 14:58:12 2023 36.5.145.85:49977 TLS Error: TLS object -> incoming plaintext read error
Fri Sep 22 14:58:12 2023 36.5.145.85:49977 TLS Error: TLS handshake failed
Fri Sep 22 14:58:12 2023 36.5.145.85:49977 Fatal TLS error (check_tls_errors_co), restarting
Fri Sep 22 14:58:12 2023 36.5.145.85:49977 SIGUSR1[soft,tls-error] received, client-instance restarting
注意看这里:
error=CRL has expired
意思是 CRL已过期,问题大致清楚;
问题处理
这里,主要有两种解决方案:
1、OpenVPN 新证书撤销列表法,即:重新生成crl.pem证书
./easyrsa gen-crl # 使用EasyRSA的CRL生成新的CRL证书
2、注释掉VPN配置文件的CRL证书选项。
vim server.conf
#crl-verify ********/crl.pem # 注释掉
注意:crl-verify 行配置当时是为了吊销客户端证书添加的,所以要注意当初吊销的客户端证书这一问题;
最后重启下openvpn服务;