排查登录过程中发生的安全套接字层 (SSL) 错误

注意

  • 本文仅适用于 Windows。
  • 一致的身份验证错误通常是由于设置不正确,而间歇性故障通常是由于连接断开、性能不佳或超时问题导致的。
  • 建议在 Windows 文件资源管理器中打开文件扩展名。

现象

使用 TLS/SSL 时,可能会遇到以下一些错误:

命名管道

已成功与服务器建立连接,但在登录过程中发生错误。 (提供程序:SSL 提供程序,错误:0 - 管道的另一端没有进程)Microsoft SQL Server,错误:233。

TCP

已成功与服务器建立连接,但在登录过程中发生错误。 (提供程序:SSL 提供程序,错误:0 - 远程主机 10054 强行关闭连接)Microsoft SQL Server,错误:233。

解决方法

若要排查这些 SSL 错误,请执行以下步骤:

  1. 更新过期或不正确的证书。
  2. 启用 TLS 协议。
  3. 确保客户端和服务器上有匹配的密码套件。

有关这些步骤的详细信息,请参阅 升级到 TLS 1.2 后报告 SSL 错误。

如果此解决方法不起作用,请使用以下部分中的步骤收集更详细的日志,以便深入了解这些错误的根本原因。

高级 SSL 数据捕获

使用 SQLCHECK 捕获 Windows 设置

在客户端计算机、服务器计算机和任何其他相关系统(例如 Web 服务器或 SQL Server 链接服务器中间计算机)上运行 SQLCHECK。

  1. 下载最新版本的 SQLCHECK 并将其解压缩到文件夹,例如 C:\MSDATA
  2. 双击 Windows 文件资源管理器中的可执行文件。 报表将写入SQLCheck.exe所在的文件夹。

配置驱动程序内置诊断 (BID) 跟踪

  1. 下载最新版本的 SQLTRACE 并将其解压缩到 C:\MSDATA文件夹中。

    将有两个文件 SQLTrace.ps1 SQLTrace.ini。 INI 文件用于配置要捕获的内容。

  2. 在记事本中打开 SQLTrace.ini ,然后转到 “投标跟踪 ”部分。

  3. 请确保 BIDTrace=yes 已设置。

  4. 确保 BIDProviderList 符合应用程序正在使用的驱动程序。

    将自动启用内置的 System.Data.SqlClient .NET 驱动程序。 如果这些不是应用程序正在使用的驱动程序,请使用字符注释此行 # ,并取消注释其他一个(如 ODBC 部分或 OLEDB 部分)。 如果不确定,请询问数据库管理员(DBA)或应用程序开发人员,或使用第四 BIDProviderList个驱动程序,其中包含当前使用的所有驱动程序。

  5. 保存文件。

配置网络跟踪

网络部分会自动配置Network=yesNETSH=yes。 不应在没有充分理由的情况下更改这些设置。

如果要跟踪本地连接,请确保应用程序使用 TCP/IP,而不是共享内存或命名管道。 安装和使用 WireShark 进行网络捕获,因为它支持 LoopBack 捕获。 WireShark 还很好地捕获 VPN 流量。

配置身份验证跟踪

身份验证” 部分自动配置了 Auth=yes 其他许多设置。

你可能还需要在 MISC 部分进行设置FlushTickets=yes。 它将为计算机上的所有用户和服务刷新 Kerberos 票证。

启用 BID 跟踪

保存对SQLTrace.ini文件的所有更改后,必须先启用 BID 跟踪,然后才能开始跟踪。

  1. 以管理员身份打开 PowerShell。

  2. 将目录更改为包含 SQLTrace.ps1 的文件夹。

    CD C:\MSDATA
    
  3. 初始化 BID 跟踪注册表。

    .\SQLTrace.ps1 -setup
    
  4. 重启要跟踪的服务或应用程序。 否则,不会跟踪应用程序。

收集跟踪数据

注意

在继续操作之前,请确保所有计算机上都已完成上述步骤。

  1. 在以管理员身份跟踪的所有计算机上打开 PowerShell。 在重现问题之前,请完成所有计算机上的启动步骤。

  2. 将目录更改为包含 SQLTrace.ps1 的文件夹。

    CD C:\MSDATA
    
  3. 启动跟踪集合。

    .\SQLTrace.ps1 -start
    
  4. 出现命令提示符时重现问题。

  5. 停止跟踪。

    .\SQLTrace.ps1 -stop
    

输出文件夹在当前目录中生成,你可以使用它进行进一步分析。

跟踪可能需要一两分钟才能完全停止,因为下载事件日志可能需要一段时间。

可以多次启动和停止跟踪,而无需重做配置步骤。 每次使用时,都会创建一个新文件夹,其中包含时间戳作为文件夹名称的一部分。 这一次对应于跟踪开始的时间。

第三方信息免责声明

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。