删除 OpenVPN 证书并在服务器上没有证书文件的情况下进行连接

tym*_*mik 6 certificate openvpn

我遇到了一个问题,我从服务器中删除了证书文件。

但是拥有这些文件的客户端仍然可以连接。

我发现,我应该撤销证书,这可以通过更改与该证书的行来完成

/etc/openvpn/easy-rsa/keys/index.txt

将 R 而不是 V 作为第一个字符行。

但之前我已经从文件中删除了该证书的行,因为再次尝试生成该证书只​​是给出了一个 0 字节大小的文件。

正如我所读到的,从 删除后它应该无法连接index.txt,但它确实连接了。

什么可能导致问题,我如何才能禁止该特定证书连接?

我希望能够创建具有相同名称、CN 和我为每个证书设置的其他变量的证书,因为那个被禁止 - 新创建的证书应该能够连接。

编辑:

解决方案是撤消更改index.txt(在我希望撤销的证书中将 R 改回 V)并在 中生成 CRL easy-rsa,但缺少了。
不得以我的方式手动更改 index.txt,因为它缺少撤销日期并且不允许我生成丢失的 CRL。我发现/etc/openvpn/easy-rsa/revoke-full <cert name>,在我的情况下,撤销应该由, 与生成证书时的所有变量一起完成。

the*_*bit 10

简单的答案是它不起作用,因为你都弄错了

您的基本误解似乎在于 OpenVPN 和证书颁发机构确实有一个通信通道,因此 OpenVPN 会自动知道您想要允许哪些证书。事实并非如此。OpenVPN 和证书颁发机构是完全独立的实体(即使它们都位于同一主机上)并且彼此之间没有任何通信。

CA 通过用自己的私钥加密认证请求的散列来“签署”认证请求(基本上是与主机名等标识信息捆绑在一起的公钥)。OpenVPN 所做的是检查 a) 它是否可以使用 CA 的公钥(它具有,通常驻留在某个 ca.crt 文件中)解密哈希,并检查给定证书的哈希是否正确。它不需要也不使用任何与 CA 的“实时”连接。

您不能通过从 CA 的目录中删除证书来撤销证书(请注意,如果您已删除客户端证书并且它是您唯一的副本,则openssl ca不允许您再撤销它)或更改 index.txt(此文件只是一个openssl ca有关可用证书状态的指示)。你需要做的是

  1. 运行openssl ca -revoke <certificate file>撤销内部OpenSSL CA数据库中的证书(基本上是在 中添加撤销信息index.txt
  2. 使用创建证书吊销列表 openssl ca -gencrl -out ca.crl
  3. 将此吊销列表复制到 OpenVPN 吊销列表文件(请参阅crl-verifyOpenVPN 配置文件中的指令)
  4. 请参阅 OpenVPN 在下一次证书检查中拒绝连接

如果您正在使用easy-rsaOpenSSL CA设置的shell 包装器脚本,请参阅有关证书吊销OpenVPN 部分,以获取有关如何使用 easy-rsa 脚本实现上述目的的更详细文档。基本程序是

# cd into the easy-rsa directory
cd <somewhere>/easy-rsa
# load your CA-related variables into the shell environment from the ./vars file
. ./vars
# run the revoke script for <clientcert.pem>
./revoke-full clientcert
Run Code Online (Sandbox Code Playgroud)

您会$KEY_DIR./vars文件中定义的目录中找到 crl.pem 。