使用 OpenVPN 选项获取客户端证书

使用 OpenVPN 选项获取客户端证书

我想为 OpenVPN 创建自定义证书,不使用用户名和密码身份验证选项,而是直接将身份验证凭据放在客户端证书中。这将用于跨多个节点的更灵活的身份验证系统,而无需在每个节点上本地创建客户端证书。

基本上,客户端证书将保持不变,除了证书本身内部有一个令牌,以及客户端连接到节点时的情况。节点将使用令牌对客户端进行身份验证。不使用用户名和密码实现此目的的最佳方法是什么。

谢谢。

答案1

这涵盖OpenVPN 手册

为每个用户创建一个凭证文件,这是一个只有两行的文本文件:

username
password

行分隔符必须是CRCRLF(例如标准 Unix 或 Windows 分隔符)。我们将此文件称为vpn.auth

然后,在客户端配置中添加以下行:

...
auth-user-pass vpn.auth
...

如果auth-user-pass已经存在,则需要向其添加一个参数——包含用户名和密码的文件名。

为了实现此功能,您的 OpenVPN 必须使用 ENABLE_PASSWORD_SAVE 定义进行编译(通常都是这样)。OpenVPN 3.x(仅限客户端的 OpenVPN 版本)也不支持此功能,因此不要使用该版本;请使用 OpenVPN 社区版 2.5 或更高版本。

依靠此作为唯一的身份验证机制本质上是不安全的。这应该只作为额外的机制。它并非旨在用个人证书和私钥取代主要​​的基于非对称加密的身份验证机制,而是要增强它。在规划 OpenVPN 时,您必须理所当然地认为它使用个人密钥和证书,并实施 VPN 用户管理,以便它执行所有必要的密钥生成和签名。如果您已经有一些脚本,您必须更新它们以包括每个人的密钥生成!

相关内容