OpenVPN duplicate-cn:如何区分客户端

我有一个OpenVPN的设置,其中整个类的客户端(embedded式设备)共享相同的客户端证书。

但是,它们可以通过它们的主机名来识别(无论如何都是从硬件ID派生出来的) – 我希望能够通过分配不同的IP地址(我知道所有的主机名),或者通过分配他们在我所控制的区域中使用不同的dynamicDNS条目。

任何一个选项都可以 – 但是如何从客户端获取这些信息到脚本serverside?

OpenVPN似乎没有提供任何关于通用名称以外的客户的信息,所以没有一个好方法来做到这一点。 但是,除了证书身份validation之外,您还可以通过使用用户名/密码身份validation来破解一些内容,并且每个设备的用户名都是唯一的。

在服务器configuration中:

auth-user-pass-verify /etc/openvpn/auth-accept.sh via-env auth-user-pass-optional username-as-common-name 

不要设置client-cert-not-required – 真正的身份validation仍将使用证书完成。 auth-accept.sh是一个总是表示成功validation的虚拟脚本:

 #!/bin/sh exit 0 

客户端应configuration为提供用户名/密码authentication(以及证书authentication):

 auth-user-pass /etc/openvpn/devicename 

devicename然后包含每个设备的唯一用户名和一个虚拟密码:

 device001 password