Openvpn无法连接

  • openvpn 突然间无法连接,日志内容如下
1
2
3
4
5
6
7
8
9
Sat May  4 15:49:58 2019 1.1.1.1:21546 TLS: Initial packet from [AF_INET]1.1.1.1:21546, sid=9ea30ece 82e7d33e
Sat May 4 15:49:58 2019 1.1.1.1:21546 VERIFY ERROR: depth=0, error=CRL has expired: CN=test
Sat May 4 15:49:58 2019 1.1.1.1:21546 OpenSSL: error:14089086:SSL routines:ssl3_get_client_certificate:certificate verify failed
Sat May 4 15:49:58 2019 1.1.1.1:21546 TLS_ERROR: BIO read tls_read_plaintext error
Sat May 4 15:49:58 2019 1.1.1.1:21546 TLS Error: TLS object -> incoming plaintext read error
Sat May 4 15:49:58 2019 1.1.1.1:21546 TLS Error: TLS handshake failed
Sat May 4 15:49:58 2019 1.1.1.1:21546 Fatal TLS error (check_tls_errors_co), restarting
Sat May 4 15:49:58 2019 1.1.1.1:21546 SIGUSR1[soft,tls-error] received, client-instance restarting
Sat May 4 15:50:38 2019 TCP connection established with [AF_INET]1.1.1.1:21713
  • 随后在网上找解决办法,大多数为客户端与服务器时间不一致,检查后发现时间一致,没有问题,随后怀疑可能是证书过期,检查CA、和Server证书后并没有过期

  • 仔细检查日志发现error=CRL has expired,随即检查easyrsa配置文件easy-rsa/3/easyrsa,找到如下内容

    1
    2
    3
    set_var EASYRSA_CA_EXPIRE       3650
    set_var EASYRSA_CERT_EXPIRE 3650
    set_var EASYRSA_CRL_DAYS 180
  • EASYRSA_CRL_DAYS 指证书撤销列表 (CRL)过期时间,单位为天

  • 怀疑可能是EASYRSA_CRL_DAYS过期导致VPN无法连接,随即修改

    1
    set_var EASYRSA_CRL_DAYS        3650
  • 执行命令,重新生成CRL

    1
    ./easyrsa gen-crl
  • 生成后重启openvpn server

    1
    2
    3
    4
    5
    6
    [root@linux-bridge pki]# ps -ef |grep openvpn
    root 3333 1 0 May04 ? 00:00:52 /sbin/openvpn --daemon --config /etc/openvpn/server.conf --log-append /var/log/openvpn.log
    root 19916 18667 0 13:44 pts/1 00:00:00 grep --color=auto openvpn

    [root@linux-bridge pki]# kill 3333
    [root@linux-bridge pki]# /sbin/openvpn --daemon --config /etc/openvpn/server.conf --log-append /var/log/openvpn.log
  • 再次连接vpn,恢复正常

总结

  • 本次问题中因为使用了easyrsa生成证书,且vpn开启了证书吊销检测,因为CRL默认过期时间为180天,所以导致180天后vpn无法连接。
  • 理论上不需要修改EASYRSA_CRL_DAYS,在180天过期后重新执行./easyrsa gen-crl 生成CRL文件即可