本文讨论如何排查基于 SSL 的 LDAP(LDAPS)连接问题的步骤。
适用于: Windows Server 2016、Windows Server 2019、Windows Server 2022
原始 KB 数: 938703
步骤 1:验证服务器身份验证证书
确保所使用的服务器身份验证证书满足以下要求:
域控制器的 Active Directory 完全限定域名显示在以下位置之一:
- “使用者”字段中的公用名(CN)。
- DNS 条目中的使用者可选名称 (SAN) 扩展。
增强型密钥用法扩展包括服务器身份验证对象标识符(1.3.6.1.5.5.7.3.1)。
关联的私钥在域控制器上可用。 若要验证密钥是否可用,请使用
certutil -verifykeys
命令。证书链在客户端计算机上有效。 若要确定证书是否有效,请执行以下步骤:
在域控制器上,使用证书管理单元将 SSL 证书导出到名为 Serverssl.cer的文件。
将Serverssl.cer文件复制到客户端计算机。
在客户端计算机上,打开命令提示符窗口。
在命令提示符下,键入以下命令,将命令输出发送到名为 Output.txt的文件:
certutil -v -urlfetch -verify serverssl.cer > output.txt
注意
若要执行此步骤,必须安装 Certutil 命令行工具。
打开Output.txt文件,然后搜索错误。
步骤 2:验证客户端身份验证证书
在某些情况下,如果 LDAPS 在客户端计算机上可用,则使用客户端身份验证证书。 如果此类证书可用,请确保证书满足以下要求:
增强型密钥使用扩展包括客户端身份验证对象标识符(1.3.6.1.5.5.7.3.2)。
关联的私钥在客户端计算机上可用。 若要验证密钥是否可用,请使用
certutil -verifykeys
命令。证书链在域控制器上有效。 若要确定证书是否有效,请执行以下步骤:
在客户端计算机上,使用证书管理单元将 SSL 证书导出到名为 Clientssl.cer的文件。
将Clientssl.cer文件复制到服务器。
在服务器上,打开命令提示符窗口。
在命令提示符下,键入以下命令,将命令输出发送到名为 Outputclient.txt的文件:
certutil -v -urlfetch -verify serverssl.cer > outputclient.txt
打开Outputclient.txt文件,然后搜索错误。
步骤 3:检查多个 SSL 证书
确定多个 SSL 证书是否符合步骤 1 中所述的要求。 Schannel (Microsoft SSL 提供程序)选择 Schannel 在本地计算机存储中找到的第一个有效证书。 如果本地计算机存储中提供了多个有效证书,则 Schannel 可能无法选择正确的证书。 如果在尝试通过 LDAPS 访问的域控制器上安装 CA,则可能会发生与证书颁发机构(CA)证书的冲突。
步骤 4:验证服务器上的 LDAPS 连接
使用域控制器上的Ldp.exe工具尝试使用端口 636 连接到服务器。 如果无法使用端口 636 连接到服务器,请参阅Ldp.exe生成的错误。 此外,查看事件查看器日志以查找错误。 有关如何使用 Ldp.exe 连接到端口 636 的详细信息,请参阅 如何使用第三方证书颁发机构通过 SSL 启用 LDAP。
步骤 5:启用 Schannel 日志记录
在服务器和客户端计算机上启用 Schannel 事件日志记录。 有关如何启用 Schannel 事件日志记录的详细信息,请参阅 如何在 Windows 和 Windows Server 中启用 Schannel 事件日志记录。
注意
如果必须在运行 Microsoft Windows NT 4.0 的计算机上执行 SSL 调试,则必须对已安装的 Windows NT 4.0 Service Pack 使用Schannel.dll文件,然后将调试器连接到计算机。 Schannel 日志记录仅将输出发送到 Windows NT 4.0 中的调试器。