排查 LDAP over SSL 连接问题

本文讨论如何排查 LDAP over SSL (LDAPS) 连接问题的步骤。

适用于: Windows Server 2003
原始 KB 编号: 938703

步骤 1:验证服务器身份验证证书

确保所使用的服务器身份验证证书满足以下要求:

  • 域控制器的 Active Directory 完全限定域名显示在以下位置之一:

    • 主题 ”字段中 (CN) 的公用名。
    • DNS 条目中的使用者可选名称 (SAN) 扩展。
  • 增强的密钥用法扩展包括服务器身份验证对象标识符 (1.3.6.1.5.5.7.3.1) 。

  • 关联的私钥在域控制器上可用。 若要验证密钥是否可用,请使用 certutil -verifykeys 命令。

  • 证书链在客户端计算机上有效。 若要确定证书是否有效,请执行以下步骤:

    1. 在域控制器上,使用“证书”管理单元将 SSL 证书导出到名为 Serverssl.cer 的文件。

    2. 将Serverssl.cer文件复制到客户端计算机。

    3. 在客户端计算机上,打开命令提示符窗口。

    4. 在命令提示符下,键入以下命令,将命令输出发送到 名为Output.txt的文件:

      certutil -v -urlfetch -verify serverssl.cer > output.txt
      

      注意

      若要执行此步骤,必须安装 Certutil 命令行工具。

    5. 打开 Output.txt 文件,然后搜索错误。

步骤 2:验证客户端身份验证证书

在某些情况下,LDAPS 使用客户端身份验证证书(如果客户端计算机上可用)。 如果此类证书可用,请确保证书满足以下要求:

  • 增强的密钥用法扩展包括客户端身份验证对象标识符 (1.3.6.1.5.5.7.3.2) 。

  • 关联的私钥在客户端计算机上可用。 若要验证密钥是否可用,请使用 certutil -verifykeys 命令。

  • 证书链在域控制器上有效。 若要确定证书是否有效,请执行以下步骤:

    1. 在客户端计算机上,使用“证书”管理单元将 SSL 证书导出到名为 Clientssl.cer 的文件。

    2. 将Clientssl.cer文件复制到服务器。

    3. 在服务器上,打开命令提示符窗口。

    4. 在命令提示符下,键入以下命令,将命令输出发送到 名为Outputclient.txt的文件:

      certutil -v -urlfetch -verify serverssl.cer > outputclient.txt
      
    5. 打开 Outputclient.txt 文件,然后搜索错误。

步骤 3:检查多个 SSL 证书

确定多个 SSL 证书是否满足 步骤 1 中所述的要求。 Schannel (Microsoft SSL 提供程序) 选择 Schannel 在本地计算机存储中找到的第一个有效证书。 如果本地计算机存储中提供了多个有效证书,则 Schannel 可能无法选择正确的证书。 如果 CA 安装在尝试通过 LDAPS 访问的域控制器上,则可能会与证书颁发机构 (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 中的调试器。