openvpn证书过期解决
一、问题
客户端:OpenVPN所有客户端突然无法拨入
WARNING: No server certificate verification method has been enabled
服务端:查看服务端日志发现如下错误信息:
Tue Mar 12 22:58:11 2024 TCP connection established with [AF_INET]36.5.145.85:49977
Tue Mar 12 22:58:11 2024 36.5.145.85:49977 TLS: Initial packet from [AF_INET]36.5.145.85:49977, sid=d05e0a39
Tue Mar 12 22:58:11 2024 36.5.145.85:49977 WARNING: Failed to stat CRL file, not (re)loading CRL.
Tue Mar 12 22:58:11 2024 36.5.145.85:49977 VERIFY ERROR: depth=0, error=CRL has expired: CN=xuyubing
Tue Mar 12 22:58:11 2024 36.5.145.85:49977 OpenSSL: error:14089086:SSL routines:ssl3_get_client_certificate:c
Tue Mar 12 22:58:11 2024 36.5.145.85:49977 TLS_ERROR: BIO read tls_read_plaintext error
Tue Mar 12 22:58:11 2024 36.5.145.85:49977 TLS Error: TLS object -> incoming plaintext read error
Tue Mar 12 22:58:11 2024 36.5.145.85:49977 TLS Error: TLS handshake failed
Tue Mar 12 22:58:11 2024 36.5.145.85:49977 Fatal TLS error (check_tls_errors_co), restarting
Tue Mar 12 22:58:11 2024 36.5.145.85:49977 SIGUSR1[soft,tls-error] received, client-instance restarting
二、原因
Your certificate has expired! 也就是 证书过期了
情况1:服务器时间与客户端时间相差太多
解决办法:检查服务器时间,或者是ntp时间同步
情况2:证书到了限制期限,默认服务端证书有效期为825天。
解决办法:重新生成证书进行替换。
步骤如下:
1、预修改,先备份,偷懒将openvpn所有全部都备份了一下
[root@openvpn openvpn]# cd /etc/
[root@openvpn etc]# cp openvpn openvpn20240312 -Rp
2、使用的是easy-rsa进行证书生成,删除旧的pki文件夹
[root@openvpn openvpn]# cd /etc/openvpn/easy-rsa
[root@openvpn easy-rsa]# rm -rf pki
[root@openvpn easy-rsa]# ./easyrsa init-pki
3、生成ca证书
[root@openvpn easy-rsa]# ./easyrsa --batch build-ca nopass
4、生成服务端证书(前面的环境变量代表证书超时天数为3650天):
[root@openvpn easy-rsa]# EASYRSA_CERT_EXPIRE=3650 ./easyrsa build-server-full server nopass
5、生成客户端证书:
[root@openvpn easy-rsa]# EASYRSA_CERT_EXPIRE=3650 ./easyrsa build-client-full client nopass
6、生成crl.pem文件:
[root@openvpn easy-rsa]# EASYRSA_CRL_DAYS=3650 ./easyrsa gen-crl
7、替换证书文件,将这些文件统一复制到/etc/openvpn:
[root@openvpn easy-rsa]# cp pki/ca.crt pki/private/ca.key pki/issued/server.crt pki/private/server.key pki/crl.pem /etc/openvpn/
8、为避免权限问题,将crl.pem的所有者改为nobody:
[root@openvpn easy-rsa]# chown nobody:nobody /etc/openvpn/crl.pem
9、生成OpenVPN所需的secret文件ta.key,并复制到相应路径:
[root@openvpn easy-rsa]# openvpn --genkey --secret ta.key
[root@openvpn easy-rsa]# cp ta.key /etc/openvpn/
10、使用openssl命令验证证书有效性:
[root@openvpn easy-rsa]# cd /etc/openvpn/
[root@openvpn openvpn]# openssl verify -CAfile ca.crt -purpose sslserver server.crt
server.crt: OK
11、重启OpenVPN服务,即可使OpenVPN加载新的证书文件。
[root@openvpn openvpn]# ps -ef|grep -v grep|grep openvpn |cut -c 9-15|xargs kill -9
[root@openvpn openvpn]# /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf &