OpenVPN LDAP启用TLS连接微软Active Directory认证失败的配置求助
OpenVPN LDAP启用TLS连接微软Active Directory认证失败的配置求助
看起来你已经把OpenVPN和AD的LDAP基础认证跑通了,现在卡在启用TLS加密连接这一步,我来帮你梳理下需要调整和检查的关键点:
一、OpenVPN LDAP插件的TLS配置调整
首先先修改你现有的LDAP配置段,重点调整这几个参数:
- 启用TLS:把
TLSEnable no改成TLSEnable yes - 配置CA证书:取消
TLSCACertFile的注释,这里必须填入微软AD域控制器的根CA证书路径(注意要是PEM/Base64编码格式的证书,不是DER格式)。你需要从AD的证书服务或者通过MMC控制台导出根CA证书,保存成PEM格式后放到OpenVPN服务器的指定目录,确保OpenVPN进程有读取权限(可以设权限为chmod 644 /root/ad-root-ca.pem) - LDAP URL选择:
- 如果用StartTLS(在普通LDAP连接基础上升级TLS,默认用389端口):保持
URL ldap://ad.xxxxxx.eu即可 - 如果用LDAPS(直接加密连接,默认636端口):把URL改成
ldaps://ad.xxxxxx.eu:636,这种情况下有些LDAP插件可能不需要TLSEnable yes,但建议保持启用并配置CA证书
- 如果用StartTLS(在普通LDAP连接基础上升级TLS,默认用389端口):保持
修改后的配置示例参考:
<LDAP> # LDAP server URL URL ldap://ad.xxxxxx.eu # Bind DN (If your LDAP server doesn't support anonymous binds) BindDN xxxx@xxxx.com # Bind Password Password "xxxxx" # Network timeout (in seconds) Timeout 15 # Enable Start TLS TLSEnable yes # Follow LDAP Referrals (anonymously) FollowReferrals no # TLS CA Certificate File TLSCACertFile /root/ad-root-ca.pem # Client Certificate and key - AD一般不需要客户端证书认证,保持注释即可 #TLSCertFile /root/cert1.cer #TLSKeyFile /etc/openvpn/server/ovpn_AD.key </LDAP>
二、微软Active Directory端的配置检查
AD这边需要确保LDAP的TLS连接是可用的:
- AD域控制器必须有有效的计算机证书:
- 首先要在AD环境中部署证书服务(CA),给域控制器颁发包含LDAP服务标识的计算机证书(证书的SAN字段要包含AD的域名
ad.xxxxxx.eu,否则会出现证书名称不匹配错误) - 可以通过MMC的“证书”控制台,查看域控制器的“本地计算机”证书存储里,是否有来自内部CA的有效计算机证书
- 首先要在AD环境中部署证书服务(CA),给域控制器颁发包含LDAP服务标识的计算机证书(证书的SAN字段要包含AD的域名
- 开放对应端口:防火墙要允许OpenVPN服务器访问AD的389端口(StartTLS)或者636端口(LDAPS)
- 测试LDAP TLS连接可用性:在OpenVPN服务器上用
ldapsearch命令先验证连接是否正常,比如:
如果能返回AD用户信息,说明LDAP的TLS连接本身是正常的,问题出在OpenVPN插件的配置;如果连接失败,先排查AD端的证书和端口问题# 测试StartTLS连接 ldapsearch -H ldap://ad.xxxxxx.eu -ZZ -D "xxxx@xxxx.com" -w "xxxxx" -b "dc=xxxx,dc=com" "(objectClass=user)"
三、常见排查点
- 查看OpenVPN日志:去
/var/log/openvpn/或者系统日志(比如/var/log/syslog)里找认证失败的具体错误信息,比如“证书不被信任”“证书名称不匹配”“连接超时”,这些信息能帮你快速定位问题 - 证书格式转换:如果你的AD CA证书是DER格式,用openssl转换成PEM格式:
openssl x509 -inform der -in ad-root-ca.cer -out ad-root-ca.pem - 权限检查:确保OpenVPN进程(通常是
openvpn用户)能读取CA证书文件,不要设成只有root才能读的权限
备注:内容来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

