我使用这些easy-rsa/2.0
程序为 OpenVPN 构建了服务器和客户端证书。我将客户端证书连同一起复制到了客户端ca.crt
。一切顺利。
我现在需要撤销被盗笔记本电脑上的客户端证书。其中/usr/share/doc/openvpn/examples/easy-rsa/2.0
有一个撤销脚本。我已成功运行该脚本,它显示“数据库已更新”。它在 examples/doc 文件夹的子目录中创建了一些文件。
我已将创建的复制crl.pem
到/etc/openvpn/crl.pem
,并已添加crl-verify /etc/openvpn/crl.pem
到server.conf
。
有什么方法可以验证我做的是正确的事情并且它确实会阻止访问?
另外,我不清楚这个“数据库”存储在哪里或它指的是什么?有什么方法可以检查这个数据库吗?
答案1
easy-rsa 目录中有一个“revoke-full”文件。当您使用用户/密钥作为参数运行此脚本时,easy-rsa/keys 目录中的 index.txt 文件将被更新。
您会在用户的左侧第一列看到一个“R”(代表已撤销)。
答案2
在我的服务器上我没有 easy-rsa 脚本,但是您可以使用手动撤销 OpenVPN 客户端证书,而无需 easy-rsa openssl
。
很多信息取自这一有用的资源但是如果您的 OpenVPN 服务器的设置与我的一样,则证书颁发机构将与 OpenVPN 服务器设置一起配置,并在服务器上生成客户端证书(我使用 Ansible + Sovereign 一次为多个用户设置证书)。
# as root in /etc/openvpn
openssl ca -config openssl-server-certificate.cnf -revoke /path/to/client.crt
这将撤销证书并更新数据库,但您仍需要确保 OpenVPN 正在检查证书撤销列表,因此请编辑server.conf
并检查以 开头的行crl-verify
。如果找不到,请添加它:
crl-verify /usr/share/openvpn/openssl-server.crl
(您可以使用任何您想要的路径,但大多数 OpenVPN 服务器都配置为按 运行,nobody:nobody
因此您需要一些全球可执行的路径 - 不是/etc/openvpn
)
最后告诉 OpenSSL 重新生成撤销列表
openssl ca -config openssl-server-certificate.cnf -gencrl -out /usr/share/openvpn/openssl-server.crl
(或您的撤销列表所在的任何位置)。重新启动 OpenVPN 服务,它应该会将更改引入配置并在验证连接请求时使用 CRL - 如果证书被撤销,则连接将被断开。
答案3
使用
./list-crl
从 easy-rsa 目录显示已撤销证书的序列号。
还要检查 openvpn 日志中是否有“CRL CHECK FAILED”消息。
答案4
就我而言,我在 ubuntu 20.04 上配置了 OpenVPN 服务器。最后,我能够通过以下步骤禁用用户。
我有两个用于 OpenVPN 的服务器,一个用于 OpenVPN,另一个用于 CA 配置。
登录第二台服务器(CA)并使用命令撤销证书./easyrsa revoke client_name
。使用 进行确认yes
并提供您是否有证书密码。
使用命令生成新的 CRL(证书吊销列表)./easyrsa gen-crl
。crl.pem
使用 scp 命令将生成的 CRL 复制到 OpenVPN 服务器的 tmp 目录。
scp ~/easy-rsa/pki/crl.pem username@your_server_ip:/tmp
一旦您为客户端撤销了证书,请将 pem 文件移动到/etc/openvpn/server
第二台服务器(openVPN 服务器)上的目录中的 OpenVPN 服务器。
sudo cp /tmp/crl.pem /etc/openvpn/server/
打开 OpenVPN 服务器配置文件sudo vi /etc/openvpn/server/server.conf
并在文件底部添加以下行。
crl-verify crl.pem
保存并关闭文件,然后重新启动OpenVPN服务以实现证书撤销。
sudo systemctl restart [email protected]
我希望它对你有帮助。