Technical Anshu 主页 › 教程 › SQL Server 加密错误
🔐 SQL Server 修复

修复 SQL Server 加密错误 - 一键解决方案

SQL Server 连接后拒绝登录,因为它无法信任服务器的证书。这不是网络问题,您的数据也没有消失——这是信任问题。按照视频显示的顺序完成修复:快速客户端选项、应用程序连接字符串内的相同开关以及服务器本身的正确修复。

✍️ Technical Anshu🔐 SQL Server🎧 Multi-Language Audio
修复 SQL Server 加密错误 - 一键解决方案
🎧 多语言音频: 在视频播放器中,点击 [设置] (⚙️) ➔ [音频轨道] 选择您的首选语言。

📑章节

  1. 登录错误 - “证书链是由不受信任的机构颁发的”
  2. 错误的真正含义 - 需要加密,服务器的证书无法证明其身份
  3. 快速客户端修复 - SSMS 连接窗口中信任服务器证书
  4. 应用程序连接字符串中的相同修复
  5. 正确的解决方法 - 为服务器提供客户端信任的真实证书
  6. 验证修复 - 以严格方式重新连接并证明加密确实有效

📋 概述和分步指南

1

阅读错误 - 这是信任问题,而不是网络问题

您的网络良好并且服务器正在运行。连接到达 SQL Server,服务器为登录提供加密通道,但您的 PC 拒绝了它,因为证明服务器身份的证书不是由您的 PC 信任的任何人签署的。 SSMS 显示的完整错误是:

📌 错误,正如 SSMS 显示的那样:“已成功与服务器建立连接,但在登录过程中发生错误。(提供商:SSL 提供商,错误:0 - 证书链由不受信任的机构颁发。)”

默认情况下,SQL Server 使用它自己创建的自签名证书来保护登录。自签名证书确实会加密流量,但它无法证明服务器确实是您的服务器,因此要求经过验证的加密的客户端会拒绝它。每个诚实的修复都是以下两件事之一:让客户端在知情的情况下接受此特定服务器(步骤 2 和 3),或者为服务器提供客户端信任的证书(步骤 4)。

2

SSMS 中的快速客户端修复 - 信任服务器证书

这是视频中显示的快速路线。它不会改变服务器上的任何内容;它告诉这个连接接受服务器的证书,而不检查谁签署了它。在 SSMS 连接到服务器窗口中,单击选项打开额外选项卡,转到连接属性选项卡,将加密设置为强制(或保留为所提供),勾选信任服务器证书,然后单击连接。登录立即完成。

⚠️ 知道复选框关闭的内容:流量保持加密状态,但跳过身份检查 - 客户端也会接受放置在中间的假服务器。在您自己的办公室 LAN 上,对于您控制的服务器,这是公认的日常解决方法,并且在开发和测试机器中这是一个公平的交易。通过互联网或在保存客户数据的生产服务器上,仅将其视为临时桥梁并通过步骤 4 完成工作。它是桥梁,而不是目的地。
3

应用程序连接字符串内的相同修复

如果应用程序失败而不是 SSMS,则相同的交换机将保留在其连接字符串中。显式添加两个设置 - Encrypt=True 打开受保护通道,TrustServerCertificate=True 是 SSMS 复选框的连接字符串拼写:

Connection String
Server=SQL01;Database=AppDB;User Id=appuser;Password=YourPassword;Encrypt=True;TrustServerCertificate=True;

使用您自己的服务器名称、数据库和登录名来代替示例值。这种权衡与步骤 2 中的复选框完全相同,但有一个额外的危险:在交付的应用程序的配置中,跳过的检查会无形且永久地应用于每个用户。将其保留在开发和暂存配置中,并在生产中将其视为借用时间,直到步骤 4 中的服务器证书就位。

📌为什么应用程序在没有重建的情况下就崩溃了:最近的驱动程序更改了默认设置 - Microsoft.Data.SqlClient 5.1 和更高版本,以及 ODBC 驱动程序 18,默认情况下打开加密。从未提及加密的连接字符串开始要求对自签名证书无法通过验证的服务器进行加密。您的数据库没有任何变化;字符串内的合约做到了。明确写入设置意味着下一次驱动程序更新无法在您背后更改应用程序的行为。
4

正确的修复方法 - 为服务器提供真实的证书

永久修复在服务器上发生一次,然后每个客户端都严格连接,没有复选框,也没有警告。首先,使用服务器身份验证从内部证书颁发机构或公共 CA 获取服务器完整 DNS 名称的证书(例如 sql01.company.local)。将其及其私钥导入到 SQL Server 计算机上的本地计算机证书存储中。然后右键单击该证书,选择所有任务→管理私钥,并授予 SQL Server 服务帐户对私钥的读取权限。打开SQL Server 配置管理器,展开SQL Server 网络配置,右键单击MSSQLSERVER 协议,选择属性,然后在证书选项卡上选择证书。在标志选项卡上,您还可以将ForceEncryption设置为是,以便每个客户端都需要加密。重新启动 SQL Server 服务 - 在您重新启动之前,更改不会执行任何操作。

✅ 导致几乎所有“它不起作用”的两个陷阱:名称与客户端连接的名称不匹配的证书(通过服务器的 DNS 名称,而不是其 IP 地址连接),以及无法读取私钥的服务帐户。重新启动后,SQL Server 错误日志应该记录证书已成功加载以进行加密 - 如果它抱怨,则首先要查看私钥权限。
⚠️ 关于 ForceEncryption: 在服务器上将其设置为“是”会强制对每个连接进行加密 - 只有在安装了受信任的证书后,这才是正确的最终状态。在服务器仍然携带其自签名证书的情况下强制执行它只会使每个严格客户端同时失败并出现相同的错误。
5

以严格的方式验证修复

悄悄成功的登录证明比人们想象的要少,因为某些设置组合在没有真正保护的情况下进行连接。证明两半。首先,以严格的方式从客户端重新连接:使用服务器的 DNS 名称(证书内的名称)进行连接,将加密设置为“强制”,并取消选中信任服务器证书。登录应该成功且没有任何警告。然后,在同一会话中,通过在 SSMS 中运行以下查询来询问服务器连接是否实际上已加密:

SQL Query
SELECT session_id, encrypt_option, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID;

encrypt_option 显示 TRUE 表示及格。如果登录有效,则为 FALSE 意味着通过放弃保护连接成功,并且工作尚未完成。通过测试才是真正的终点线:任何正确配置的客户端(包括未来的 SSMS 版本)现在都可以通过完全验证进行连接,无需特殊设置。

🏷️主题搜索变量和关键字

🔍 SQLServer 🔍 CertificateNotTrusted 🔍 TrustServerCertificate 🔍 SSMS 🔍 ForceEncryption 🔍 TechnicalAnshu 🔍 SQL Server Encryption Error 🔍 Certificate Chain Not Trusted 🔍 Encrypt Connection 🔍 Connection String Fix 🔍 SQL Server Configuration Manager 🔍 SSL Provider Error
🎙️ 完整文字记录 — 点击展开

__TOK_24__

__TOK_25__

__TOK_26__

❓ 常见问题

本教程是 100% 免费学习的吗?

__TOK_27__

初学者可以遵循本指南吗?

__TOK_28__

如果遇到困难我可以在哪里提问?

__TOK_29__

🚀 在 YouTube 上观看完整教程

__TOK_30__

__TOK_31__

▶️ 观看完整视频
本教程基于技术安叔的修复SQL Server加密错误视频 • 是否卡在任何步骤?在视频评论中提问——你会在那里得到帮助🙏