我有一个 OpenVPN 服务器,它可以向 Active Directory 进行身份验证,并因此要求每个用户提供用户名和密码。
除此之外,它还要求每个用户都有客户端证书和客户端密钥(+ 服务器 ca.crt)。
问题
我希望每个用户都必须使用他们的 AD 用户名和密码登录,并且所有客户端共享相同的客户端证书和客户端密钥。
我想要共享客户端证书和密钥的原因是为了便于管理,并且可以保护网络免受某人暴力破解密码的侵害。
一种方法就是创建一个客户端,就像这样
cd /etc/openvpn/easy-rsa/2.0/
. /etc/openvpn/easy-rsa/2.0/build-key client1
并将其提供给每个用户。
在这些条件下这是正确的方法吗?还是应该以特殊方式创建客户端证书和密钥?
答案1
您不应该这样做,因为一旦您的单个密钥由于任何原因(笔记本电脑被盗、木马、员工离职等)而被泄露,您将需要为每个用户提供一个新的密钥,这很可能会导致花费比最初创建一个密钥所节省的时间更多的时间。
如果您想避免创建 CA 和签署(和撤销)客户端证书的复杂性(尽管使用 easy-rsa 脚本实际上并不难),OpenVPN 还支持非常openvpn --genkey
容易处理的静态密钥(用 生成)(尽管它们也将用于加密,而不是 TLS)。
答案2
首先,我同意 Ingmar Hupp 的观点,你不会想把一个密钥传递给一群用户。这确实不是一个好的安全策略。此外,正如他提到的,设置 CA 并使用 easy-rsa 签名/撤销密钥相当容易,而且在我看来,值得额外投入“人力”(如果你愿意的话)来正确设置/维护密钥,而不是传递一个密钥。
但无论如何,“技术”答案是添加
重复-cn
到您的 server.conf 文件。