版权声明:哈哈哈,如有转载请标明出处哟~~~ https://blog.csdn.net/qq_33633013/article/details/81912826
openvpn客户端撤销流程
(1)/opt/openvpn2017/server/easyrsa3路径下有easyrsa脚本,可以用来撤销openvpn客户端,具体可查看easyrsa脚本或者使用./easyrsa –help查看
(2)到/opt/openvpn2017/server/easyrsa3使用./easyrsa revoke ${hospital_id},此时只是更新index.txt下数据库表示为R(注销),但经实践后发现部署标志为R的客户端,仍可以正常连接服务端。
(3)在/opt/openvpn2017/server/easyrsa3/pki中找到crl.pem,将该文件的绝对路径配置到server.conf中。
(3)使用./easyrsa gen-crl更新crl.pem中内容,被撤销客户端无法正常连接。
问题总结
(1)使用./easyrsa revoke ${id}撤销后,数据库中显示已撤销,但仍可以连上服务端
解决方法:在server.conf中添加配置crl-verify /opt/openvpn2017/server/easyrsa3/pki/crl.pem,并使用./easyrsa gen-crl更新crl.pem文件
(2)服务端日志报错,无法读取crl.pem内容,但使用用户为root,查看属性为有查看等权限
解决方法:脚本中强制修改权限为666
index.txt文件
可理解为openvpn 客户端的数据库,所有生成的openvpn 客户端包括可用的以及注销的都会在这里看到记录。文件中通过第一列标志识别是否为注销状态,V为可用,R为注销。
在openvpn服务端配置文件新增配置:
crl-verify /opt/openvpn2017/server/easyrsa3/pki/crl.pem
说明:该文件为吊销证书的名单,配合openvpn index.txt(可以理解为openvpn客户端的数据库)识别客户端是否可用。若未在配置文件中配置该行,则即使使用指令注销客户端后仍可以正常连接。
脚本展示
撤销证书脚本
#!/bin/bash
#revoke crt
path=`pwd` #/opt/openvpn2017
easyRsa_path="server/easyrsa3"
hospitalId=$1
#判断参数个数
if [ $# != 1 ];then
echo "please enter hosptal_id" && exit 1
fi
cd ${path}/$easyRsa_path
#执行撤销指令
expect<<EOF
spawn ./easyrsa revoke ${hospitalId}
expect {
"*revocation:*" {
send "yes\r"
exp_continue
}
"*ca.key:*" {
send "mytijian2017\r"
exp_continue
}
}
EOF
expect<<EOF
spawn ./easyrsa gen-crl
expect {
"*ca.key:*" {
send "mytijian2017\r"
exp_continue
}
}
EOF
cd pki/ && chmod 666 crl.pem