暂停一个 OpenVPN 客户端而不吊销其证书
临时封禁应放在服务器上,而不是 CA 台账里。使用针对具体客户端的 disable 指令,结束活动会话,只在遭到入侵时才吊销证书。
当笔记本电脑要在维修台上待上一周时,常见的本能是把它从 CA 中删除。那条记录是签发者的台账,不是临时的准入开关。OpenVPN 本来就有按客户端拒绝连接的机制,用它可以让 CA 的历史保持完整。这两种控制回答的是不同的问题,把它们混为一谈会在设备回来时徒增工作。
两份记录,两项不同的职责
CA 数据库记录签发者签发了什么、后来又吊销了什么。吊销流程以及任何读取 CRL 或自家台账副本的东西都会查询它。准入规则则活在服务器上,适用于该服务器接受的连接。
删除签发记录并不能可靠地吊销证书,还会破坏后续吊销或审计所依赖的历史。服务器侧的管控范围更窄,而且可以撤销。把两者的区别写进变更说明,免得下一个人去找一次从未发生过的吊销。
把停用指令放在正确的文件里
对于使用按客户端配置的社区服务器,文档里记载的 disable 指令会拒绝一个指定的客户端。它属于该客户端在活动 client-config-dir 下的文件,而不是服务器的主配置。先确认正在运行的守护进程实际使用的是哪个目录,再确认选择文件所依据的身份。以错误通用名命名的文件看起来没问题,却永远不会被读取。
disable
这里的映射选择很关键。username-as-common-name 之类的选项会改变查找所用的身份,因此以证书主题命名的文件可能并不是实际生效的那个。请查阅已安装版本的 OpenVPN 参考手册,不要假定某条指令在任何上下文中都有效。
把新准入和活动会话分开
拒绝下一次握手并不会结束一条已经建立的隧道。如果设备现在就必须断开,还要针对该会话走服务器授权的会话管理路径。否则客户端可能一直工作到它自己重新连接,而合上笔记本盖子或退出客户端都是客户端侧的动作,说明不了服务器的情况。
两个结果都要验证:活动会话在你期望的时刻停止,新的握手被拒绝。客户端窗口关闭并不能证明服务器的策略。
如果部署没有受支持的结束活动会话的方式,请把这一缺口记录下来,而不是临时编一个。在客户端上封掉端口与服务器侧的策略不是一回事。
暂停和失陷是两种不同的事件
密钥丢失或被盗属于吊销事件,本地的准入暂停不能替代它。信任同一 CA 的其他服务器不会共享这台服务器的按客户端规则。遵循签发者的吊销与替换流程,并把 CA 数据库作为权威记录保留。相比之下,临时暂停则需要有记录的缘由和恢复步骤。
恢复访问时,通过拥有该限制的组件把它移除,并确认新连接可以成功。同时记录 disable 那一行的路径,因为后续的配置同步可能悄悄把它放回去。把暂停、责任人和日期写进部署记录,免得下一位管理员几个月后遇到一行没有解释的 disable。