删除OpenVPN证书并连接服务器上的无证书文件

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

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

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

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

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

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

正如我读过的,从index.txt删除后应该不能连接,但它确实连接。

什么可能导致这个问题,我怎么能够禁止特定的证书连接?

我希望能够为每个证书创build具有相同名称,CN和其他variables的证书,因为不允许这样做 – 新创build的证书应该具有连接能力。

编辑:

解决方法是撤销index.txt更改(将R更改回V,我希望撤销该证书),并在easy-rsa生成CRL,但缺less该更改。
index.txt不能手动修改,因为它缺less撤销date,不允许我生成缺失的CRL。 我发现,撤销应该由/etc/openvpn/easy-rsa/revoke-full <cert name> ,所有的variables都是在生成cert时生成的。

简单的回答是, 这是行不通的,因为你已经弄错了

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

CA通过用自己的私钥对authentication请求的散列进行encryption,“签署”authentication请求(基本上是与主机名称等标识信息捆绑在一起的公钥)。 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创build一个证书撤销列表
  3. 将此撤销列表复制到OpenVPN撤销列表文件(请参阅OpenVPNconfiguration文件中的crl-verify指令)
  4. 请参阅OpenVPN拒绝下一次证书检查的连接

如果您正在使用为OpenSSL CA设置的easy-rsa 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 

您可以在./vars文件中定义的$KEY_DIR目录中find./vars文件。