如何在 Debian 中撤销 OpenVPN 客户端证书

如何在 Debian 中撤销 OpenVPN 客户端证书

我使用这些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-crlcrl.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]

我希望它对你有帮助。

相关内容