我正在重新配置 openvpn 设置以使其更加安全。
目前它仅使用 ldap 身份验证。我计划将其更改为也需要客户端证书。
我的理解是,只要您拥有有效的客户端证书,那么它是谁的证书并不重要。
有没有办法让它验证证书是否与 ldap 用户匹配?
这样,如果黑客设法获取证书,那么如果没有匹配的 ldap 用户的登录名,证书对他们来说实际上没有任何用处。同样,如果他们破解了 ldap 用户密码,他们将需要一个特定的匹配证书,而不仅仅是任何有效的客户端证书。
在此阶段,我计划使用 easy-rsa 来生成 CA、服务器和客户端证书,因为我知道它有效,并且我知道如何去做。
将 Microsoft AD(我们的 ldap 提供程序)设置为 CA,在这一阶段尝试似乎有点复杂。
答案1
以防万一对其他人有帮助。这是我最终使用的客户端连接脚本...
#!/usr/bin/bash
echo "client-connect: common_name=$common_name, username=$username"
if [ "$common_name" == "$username" ]; then
echo "Client certificate common_name matches username. Allow connection."
exit 0
else
echo "Client certificate common_name does not match username. Reject connection."
exit 1
fi
common_name和username是openvpn自动提供给脚本的环境变量。
从https://openvpn.net/community-resources/reference-manual-for-openvpn-2-4/