排查登录过程中发生的安全套接字层 (SSL) 错误
注意
- 本文仅适用于 Windows。
- 一致的身份验证错误通常是由于设置不正确,而间歇性故障通常是由于连接断开、性能不佳或超时问题导致的。
- 建议在 Windows 文件资源管理器中打开文件扩展名。
现象
使用 TLS/SSL 时,可能会遇到以下一些错误:
命名管道
已成功与服务器建立连接,但在登录过程中发生错误。 (提供程序:SSL 提供程序,错误:0 - 管道的另一端没有进程)Microsoft SQL Server,错误:233。
TCP
已成功与服务器建立连接,但在登录过程中发生错误。 (提供程序:SSL 提供程序,错误:0 - 远程主机 10054 强行关闭连接)Microsoft SQL Server,错误:233。
解决方法
若要排查这些 SSL 错误,请执行以下步骤:
- 更新过期或不正确的证书。
- 启用 TLS 协议。
- 确保客户端和服务器上有匹配的密码套件。
有关这些步骤的详细信息,请参阅 升级到 TLS 1.2 后报告 SSL 错误。
如果此解决方法不起作用,请使用以下部分中的步骤收集更详细的日志,以便深入了解这些错误的根本原因。
高级 SSL 数据捕获
使用 SQLCHECK 捕获 Windows 设置
在客户端计算机、服务器计算机和任何其他相关系统(例如 Web 服务器或 SQL Server 链接服务器中间计算机)上运行 SQLCHECK。
- 下载最新版本的 SQLCHECK 并将其解压缩到文件夹,例如 C:\MSDATA。
- 双击 Windows 文件资源管理器中的可执行文件。 报表将写入SQLCheck.exe所在的文件夹。
配置驱动程序内置诊断 (BID) 跟踪
下载最新版本的 SQLTRACE 并将其解压缩到 C:\MSDATA 等文件夹中。
将有两个文件 SQLTrace.ps1 和 SQLTrace.ini。 INI 文件用于配置要捕获的内容。
在记事本中打开 SQLTrace.ini ,然后转到 “投标跟踪 ”部分。
请确保
BIDTrace=yes
已设置。确保
BIDProviderList
符合应用程序正在使用的驱动程序。将自动启用内置的 System.Data.SqlClient .NET 驱动程序。 如果这些不是应用程序正在使用的驱动程序,请使用字符注释此行
#
,并取消注释其他一个(如 ODBC 部分或 OLEDB 部分)。 如果不确定,请询问数据库管理员(DBA)或应用程序开发人员,或使用第四BIDProviderList
个驱动程序,其中包含当前使用的所有驱动程序。保存文件。
配置网络跟踪
网络部分会自动配置Network=yes
和 NETSH=yes
。 不应在没有充分理由的情况下更改这些设置。
如果要跟踪本地连接,请确保应用程序使用 TCP/IP,而不是共享内存或命名管道。 安装和使用 WireShark 进行网络捕获,因为它支持 LoopBack 捕获。 WireShark 还很好地捕获 VPN 流量。
配置身份验证跟踪
“ 身份验证” 部分自动配置了 Auth=yes
其他许多设置。
你可能还需要在 MISC 部分进行设置FlushTickets=yes
。 它将为计算机上的所有用户和服务刷新 Kerberos 票证。
启用 BID 跟踪
保存对SQLTrace.ini文件的所有更改后,必须先启用 BID 跟踪,然后才能开始跟踪。
以管理员身份打开 PowerShell。
将目录更改为包含 SQLTrace.ps1 的文件夹。
CD C:\MSDATA
初始化 BID 跟踪注册表。
.\SQLTrace.ps1 -setup
重启要跟踪的服务或应用程序。 否则,不会跟踪应用程序。
收集跟踪数据
注意
在继续操作之前,请确保所有计算机上都已完成上述步骤。
在以管理员身份跟踪的所有计算机上打开 PowerShell。 在重现问题之前,请完成所有计算机上的启动步骤。
将目录更改为包含 SQLTrace.ps1 的文件夹。
CD C:\MSDATA
启动跟踪集合。
.\SQLTrace.ps1 -start
出现命令提示符时重现问题。
停止跟踪。
.\SQLTrace.ps1 -stop
输出文件夹在当前目录中生成,你可以使用它进行进一步分析。
跟踪可能需要一两分钟才能完全停止,因为下载事件日志可能需要一段时间。
可以多次启动和停止跟踪,而无需重做配置步骤。 每次使用时,都会创建一个新文件夹,其中包含时间戳作为文件夹名称的一部分。 这一次对应于跟踪开始的时间。
第三方信息免责声明
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。