我有一个 OpenVPN 设置,其中所有客户端(嵌入式设备)都共享相同的客户端证书。
然而,它们可以通过主机名(无论如何都是从硬件 ID 派生)来区分 - 我希望能够在服务器端区分它们,无论是通过为它们分配不同的 IP 地址(我知道那里的所有主机名),还是通过分配它们位于我控制下的区域中的不同动态 DNS 条目。
任一选项都可以 - 但如何将这些信息从客户端获取到脚本服务器端?
除了通用名称之外,OpenVPN 似乎不提供有关客户端的任何信息,因此没有一个好的方法可以做到这一点。但是,除了证书身份验证之外,您还可以使用用户名/密码身份验证来组合某些内容,并且每个设备的用户名都是唯一的。
在服务器配置中:
auth-user-pass-verify /etc/openvpn/auth-accept.sh via-env
auth-user-pass-optional
username-as-common-name
Run Code Online (Sandbox Code Playgroud)
不要设置client-cert-not-required——真正的身份验证仍将使用证书来完成。auth-accept.sh是一个虚拟脚本,始终指示身份验证成功:
#!/bin/sh
exit 0
Run Code Online (Sandbox Code Playgroud)
然后应将客户端配置为提供用户名/密码身份验证(以及证书身份验证):
auth-user-pass /etc/openvpn/devicename
Run Code Online (Sandbox Code Playgroud)
devicename然后包含每个设备的唯一用户名和虚拟密码:
device001
password
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2939 次 |
| 最近记录: |