Windows Server 2019 & 2012 R2环境下Active Directory TLS认证异常问题求助
Windows Server 2019 & 2012 R2环境下Active Directory TLS认证异常问题求助
Hi there! 针对您遇到的「半年前仅需CA证书即可完成AD SSL用户认证,现在必须同时提供CA证书、客户端证书及密钥才能登录」的问题,我整理了几个适用于Windows Server 2019/2012 R2的排查与修复方案,您可以按步骤尝试:
一、调整AD LDAP服务器的TLS客户端证书要求
AD的LDAP TLS验证行为主要通过注册表项控制,您可以修改设置来禁用强制客户端证书校验:
- 打开注册表编辑器(
regedit),导航到路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters - 查找或新建DWORD(32位)值,命名为
LDAPServerIntegrity:- 值为
1:允许匿名/简单绑定(仅用于测试,不推荐生产环境) - 值为
2:要求SSL/TLS加密,但不强制客户端证书(这是您需要的模式) - 值为
3:强制SSL/TLS加密且要求客户端证书(这很可能是当前导致您问题的配置)
- 值为
- 将
LDAPServerIntegrity的值修改为2,然后重启Active Directory Domain Services服务(在服务控制台找到该服务右键重启)
另外,检查是否有组策略强制了客户端证书要求:
- 打开组策略管理控制台(
gpmc.msc),找到针对域控制器的组策略对象(GPO) - 导航到「计算机配置」>「Windows设置」>「安全设置」>「公钥策略」>「SSL证书设置」
- 查看是否存在针对LDAP服务的规则,若设置为「要求客户端证书」,请修改为「不要求客户端证书」
二、排查Windows安全更新导致的配置变更
近半年的Windows安全补丁可能调整了AD的TLS默认策略(比如KB5014754这类LDAP硬ening补丁),您可以:
- 查看域控制器的更新历史,确认是否安装了涉及LDAP/TLS安全的补丁
- 若确定是补丁导致,可查阅对应补丁的官方文档,部分补丁提供了注册表回退参数(仅临时测试使用,生产环境需谨慎)
三、验证AD服务器的TLS证书有效性
确保AD服务器的LDAP证书及CA证书配置正常:
- 打开本地证书控制台(
certlm.msc),在「个人」>「证书」下检查AD的LDAP证书是否有效(无过期、吊销、链信任问题) - 确认您使用的CA证书已部署到域控制器的「受信任的根证书颁发机构」存储中
四、客户端侧临时测试调整(仅供验证)
如果服务器端调整暂时无法生效,您可以在客户端代码中临时设置LDAP_OPT_X_TLS_REQUIRE_CERT为never,验证是否能恢复原认证方式(此为临时测试,不建议长期用于生产):
// 设置不要求客户端证书验证 ldap_set_option(ld, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_NEVER);
如果以上方案都无效,建议您收集域控制器的「系统日志」和「目录服务日志」,查看其中的TLS/LDAP相关错误事件,进一步定位问题根源。
备注:内容来源于stack exchange,提问作者ram ajay




