And*_*rei 7 openvpn authentication
配置 OpenVPN 服务器,我可以使用openvpn-plugin-auth-pam
插件启用基于证书的身份验证或用户名/密码身份验证,但不能同时启用。
我启用用户名/密码身份验证如下:
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so login
client-cert-not-required
username-as-common-name
Run Code Online (Sandbox Code Playgroud)
但是,一旦我添加了以下几行,我为证书身份验证配置的客户端就会停止使用日志中的以下消息:
TLS Error: Auth Username/Password was not provided by peer
TLS Error: TLS handshake failed
Run Code Online (Sandbox Code Playgroud)
有什么方法可以不要求使用证书身份验证的客户端的用户名/密码?
小智 1
OpenVPN 不支持多种并发身份验证方法。正如评论中提到的,最好的解决方案是运行两个 OpenVPN 实例。在同一个盒子上运行它会更复杂,但绝对是可行的。
但是,似乎确实有一些可能适合您的情况的解决方法。
如果您知道哪些证书需要密码,哪些不需要密码,那么答案是肯定的。在服务器端使用“auth-user-pass-verify”脚本首先验证证书 DN(如果您也设置了 --username-as-common-name 那么您将自动知道验证脚本中的证书通用名)。如果您知道已输入密码的证书,则使用 pam 验证用户名/密码。如果您知道证书不包含密码,则让脚本返回“0”以允许访问。
请注意,无法自动确定用户是否输入了证书密码 - 这在 openssl 握手之外,因此 OpenVPN 服务器不知道。
来源:https ://openvpn.net/archive/openvpn-users/2007-12/msg00179.html
您还可以将 OpenVPN 生成的密钥对联合到本地 LDAP 服务器中,并使用上述脚本通过提供的证书对 LDAP 进行身份验证,或者在没有提供证书的情况下使用提供的凭据。
归档时间: |
|
查看次数: |
5439 次 |
最近记录: |