适用于: Microsoft Fabric 中的 SQL Server 2022 (16.x) 及更高版本
Azure SQL 数据库
Azure SQL 托管实例
SQL 数据库
SQL Server (从 SQL Server 2022 (16.x)开始),使用表格数据流 (TDS) 8.0 时,Azure SQL 数据库和 Azure SQL 托管实例支持传输层安全性 (TLS) 1.3。
重要
即使 TLS 1.3 支持 TDS 连接,要启动 SQL Server 附属服务仍需要 TLS 1.2。 不要在计算机上禁用 TLS 1.2。
SQL Server 2019 (15.x) 和更早版本不支持 TLS 1.3。
TLS 1.2 和 TLS 1.3 之间的差异
TLS 1.3 在握手阶段将往返次数从 2 减少到 1,使其比 TLS 1.2 更快、更安全。 包含服务器证书的服务器 hello 数据包已加密,一次往返时间 (1-RTT) 恢复已停止,并替换为基于客户端密钥共享的 0-RTT 恢复。 TLS 1.3 的附加安全性来自停止某些密码和算法。
下面是 TLS 1.3 中删除的算法和密码的列表:
- RC4 流密码
- RSA 密钥交换
- SHA-1 哈希函数
- CBC(块)模式密码
- MD5 算法
- 各种非临时 Diffie-Hellman 组
- EXPORT 强度密码
- DES
- 3DES
驱动程序支持
查看驱动程序功能支持矩阵,以确定当前支持 TLS 1.3 的驱动程序。
操作系统支持
目前,以下操作系统支持 TLS 1.3:
SQL Server 2025 支持
SQL Server 2025 (17.x) 引入了对以下功能的 TLS 1.3 支持:
- SQL Server 代理
- AlwaysOn 可用性组
- AlwaysOn 故障转移群集实例(FCI)
- 链接服务器
- 事务复制
- 合并复制
- 快照复制
- 日志传送
- 数据库邮件
设置限制
当 TLS 1.3 是唯一在作系统上启用的 TLS 版本时,SQL Server 2025 安装失败。 安装过程要求在安装过程中提供 TLS 1.2。 安装完成后,可以根据需要禁用 TLS 1.2。
安装过程中的错误消息为: A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - No process is on the other end of the pipe.)
证书要求
将 TDS 8.0 与 SQL Server 2025 配合使用时,必须满足特定的证书要求:
- 受信任的证书:证书必须由受信任的证书颁发机构(CA)颁发。 默认情况下,Microsoft OLE DB Driver for SQL Server 版本 19 不再接受自签名证书。
-
证书验证:
TrustServerCertificate必须设置为False或No。 Microsoft OLE DB Driver for SQL Server 版本 19 会验证证书的信任链,并且证书验证无法被绕过。 - 使用者可选名称(SAN)要求:证书必须同时包括完全限定的域名(FQDN)和 SAN 列表中的 Netbios 名称。 SQL Server Management Studio (SSMS)在连接时通常使用 Netbios 名称,缺少条目将导致验证错误。
- 规划 SAN 条目:在证书颁发期间包括所有可能的客户端连接名称(FQDN、Netbios 名称、服务别名)。 稍后添加名称需要创建新的证书并重启 SQL Server 实例。
有关证书验证的详细信息,请参阅 加密和证书验证 - OLE DB Driver for SQL Server。
SQL Server 2025 中的默认安全配置
SQL Server 2025 为多个功能引入了默认安全配置,这些功能现在默认使用启用了加密的 TDS 8.0:
SQL Server 代理:使用 Microsoft OLE DB Driver for SQL Server 版本 19
Encrypt=Mandatory,并且需要有效的服务器证书TrustServerCertificate=False。 启用的唯一 TLS 版本为 TLS 1.3 时,必须配置Encrypt=Strict(强制严格加密)。Always On 可用性组和 FCI:默认情况下,使用适用于 SQL Server 的 ODBC 驱动程序 版本 18
Encrypt=Mandatory。 与其他功能不同,Always On 可用性组和 FCI 允许在自签名场景中使用TrustServerCertificate=True。链接服务器:默认情况下使用 Microsoft OLE DB Driver for SQL Server 版本 19
Encrypt=Mandatory。 当面向另一个 SQL Server 实例时,必须在连接字符串中指定加密参数。日志传送:使用 Microsoft OLE DB Driver for SQL Server 版本 19,
Encrypt=Mandatory并且需要有效的服务器证书。 从较低版本执行就地升级(不支持最新安全配置)时,如果未使用更安全的选项显式重写加密设置,则日志传送将使用TrustServerCertificate=True以允许向后兼容。 若要在升级后强制执行 TLS 1.3 和Encrypt=StrictTDS 8.0,请删除拓扑,并在日志传送存储过程中使用更新的参数重新创建拓扑。复制 :(事务性、快照、合并)使用 Microsoft OLE DB Driver for SQL Server 版本 19< c1 />,并且需要有效的证书。 数据库邮件:默认设置为
Encrypt=Optional和TrustServerCertificate=True。 强制实施 TLS 1.3 时,这些值将更改为Encrypt=Strict和TrustServerCertificate=False。 默认情况下,Azure SQL 托管实例使用 TLS 1.3 协议。PolyBase:将 ODBC Driver for SQL Server 版本 18 与 (
Encrypt=Yes) 配合使用Mandatory。 PolyBase 允许TrustServerCertificate=True用于自签名场景。SQL VSS 编写器:连接到 SQL Server 2025 实例时,对于该连接的非虚拟设备接口(VDI)部分,SQL VSS 编写器将使用 TLS 1.3 和 TDS 8.0。
特定于组件的要求
使用 TLS 1.3 的 SQL Server 代理:当 TLS 1.3 是唯一启用的版本时,必须使用强制严格加密(TDS 8.0)。 较低的加密设置(
Mandatory或Optional)会导致连接失败。SQL Server 代理 T-SQL 作业:连接到本地实例的 SQL Server 代理 T-SQL 作业继承 SQL Server 代理加密设置。
PowerShell 模块:TDS 8.0 目前不支持 SQLPS.exe 和 SQLPS PowerShell 模块。
AlwaysOn 可用性组和 FCI:若要使用 TDS 8.0 配置严格的加密,请使用
CLUSTER_CONNECTION_OPTIONS子Encrypt=Strict句和故障转移来应用设置。