软件指南针:专注于软件传播与分享

撤销证书 (OpenVPN官方文档)

来源:原创 1146次浏览 0条评论
☞ 本文主要介绍软件OpenVPN的相关内容:撤销证书 (OpenVPN官方文档)

   其下列版本/分支可以参考本文:

  • 全部版本/分支
英文原文:http://openvpn.net/index.php/open-source/documentation/howto.html#revoke

撤销证书

撤销一个证书 就是让一个已签名的证书作废,以便其无法再用于身份认证。

想要撤销一个证书的典型原因包括:

  • 与证书关联的私钥被泄露或被窃取。
  • 加密私钥的用户忘记了密码。
  • 你想要终止某个VPN用户的访问。

示例

举这样一个例子,我们将撤销证书client2,该证书是我们在前面的操作指南的"生成密钥"部分生成的。

首先,打开shell或命令提示符窗口,转到之前"生成密钥"部分操作过的easy-rsa目录。在Linux/BSD/Unix系统中:

. ./vars
./revoke-full client2
在Windows系统中:
vars
revoke-full client2

你可以看到类似这样的输出:

Using configuration from /root/openvpn/20/openvpn/tmp/easy-rsa/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
Revoking Certificate 04.
Data Base Updated
Using configuration from /root/openvpn/20/openvpn/tmp/easy-rsa/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
client2.crt: /C=KG/ST=NA/O=OpenVPN-TEST/CN=client2/emailAddress=me@myhost.mydomain
error 23 at 0 depth lookup:certificate revoked

请注意最后一行的"error 23"。那就是你想要看到的,因为它表明已被撤销的证书的证书校验失败。

revoke-full脚本将会在keys子目录中生成一个叫做crl.pem的CRL(证书撤销列表)文件。该文件应该被复制到一个OpenVPN服务器可以访问的目录,然后在服务器配置中启用CRL验证:

crl-verify crl.pem

现在,所有正在连接的客户端的证书会与CRL进行比对校验,任何正匹配都将导致该连接被丢失。

CRL注意事项

  • 当OpenVPN使用crl-verify选项命令后,任何新的客户端连接或者现有客户端重新建立SSL/TLS连接(默认每小时一次)都将使得CRL文件被重新读取。这意味着,即使OpenVPN服务器后台进程正在运行,你也可以更新你的CRL文件,新的CRL文件将会对新连接的客户端直接生效。如果一个刚刚撤销了证书的客户端早已经连接到服务器,你可以通过一个信号(SIGUSR1或者SIGHUP)来重启服务器,并刷新所有的客户端,或者你可以远程登录管理接口,明确杀掉服务器上指定的客户端实例对象,而不干扰其他客户端。
     
  • 虽然OpenVPN服务器和客户端都可以使用crl-verify指令,但通常不必将CRL文件分发到客户端,除非服务器证书已被撤销。客户端不需要知道其他哪些客户端的证书已被撤销,因为客户端不应该直接接受来自其他客户端的连接
     
  • CRL文件无需保密,并且应该设为所有用户可读,以便于OpenVPN进程在没有root权限的情况下能够读取该文件。
     
  • 如果你正使用chroot指令,请确保在chroot目录放置一份CRL文件的拷贝,因为不像OpenVPN读取的其他大多数文件,CRL将会在执行chroot调用之后被读取,而不是在此之前。
     
  • 需要撤销证书的一个常见原因是,用户使用密码加密了自己的私钥,然后忘记了密码。通过撤销原来的证书,用户也可以使用原来的Common Name来生成新的证书/密钥对。

作者:软件指南针(http://www.softown.cn),转载请保留出处!

用户评论

使用指南 故障排除 0 返回顶部