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

art*_*bot 4 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.

有什么方法可以验证我做了正确的事情并且它确实会阻止访问?

另外,我不清楚这个“数据库”的存储位置或它指的是什么?有没有办法检查这个数据库?

bor*_*roz 7

在easy-rsa 目录中有一个'revoke-full' 文件。当您使用用户/密钥作为参数运行此脚本时,easy-rsa/keys 目录中的 index.txt 文件将被更新。

您将在左起第一列为您的用户看到一个“R”(表示已撤销)。


Aar*_*n D 5

在我的服务器上,我没有 easy-rsa 脚本,但是您可以使用openssl.

很多信息都来自这个有用的资源,但如果你的 OpenVPN 服务器像我的一样设置,证书颁发机构与 OpenVPN 服务器设置一起配置,客户端证书在服务器上生成(我使用 Ansible + Sovereign 设置一次为多个用户提供证书)。

# as root in /etc/openvpn
openssl ca -config openssl-server-certificate.cnf -revoke /path/to/client.crt
Run Code Online (Sandbox Code Playgroud)

这会吊销证书并更新数据库,但您仍然需要确保 OpenVPN 正在检查证书吊销列表,因此编辑server.conf并检查以crl-verify. 如果没有找到,请添加它:

crl-verify /usr/share/openvpn/openssl-server.crl
Run Code Online (Sandbox Code Playgroud)

(您可以使用任何您想要的路径,但大多数 OpenVPN 服务器都配置为运行,nobody:nobody因此您需要一些世界可执行的路径 - 不是/etc/openvpn

最后告诉 OpenSSL 重新生成撤销列表

openssl ca -config openssl-server-certificate.cnf -gencrl -out /usr/share/openvpn/openssl-server.crl
Run Code Online (Sandbox Code Playgroud)

(或您的撤销列表所在的任何地方)。重新启动 OpenVPN 服务,它应该对配置进行更改,并在验证连接请求时使用 CRL - 如果证书被吊销,则连接将被删除。