加密与 SQL Server 的连接的特殊情况

客户端计算机必须信任服务器证书,以便客户端可以请求传输层安全性 (TLS) 加密,并且该证书必须已存在于服务器上。 SQL Server 加密的最常见场景涉及以下环境:

  • 强制加密与 SQL Server 的所有传入客户端连接。
  • 使用 Windows 已信任的公共商业证书颁发机构提供的证书。 CA 的相应根证书安装在网络中所有计算机上的“受信任的根证书颁发机构”证书存储中。

在这种情况下,在按照配置 SQL Server 数据库引擎以加密连接中所述的过程配置 SQL Server 以进行加密之后,无需执行其他步骤来成功加密。 本文提供了配置 SQL Server 数据库引擎以加密连接中未涉及的较不常见情况下的加密与 SQL Server 的连接的过程。

注意

有关 Microsoft 受信任的根程序参与者的完整列表,请参阅参与者列表 - Microsoft 受信任的根程序

使用公共商业证书颁发机构颁发的证书,并且仅某些客户端需要加密连接

  1. 按照配置 SQL Server 以使用证书中所述的过程,在 SQL Server 上配置证书。

  2. 将连接属性中的加密关键字指定为“是”或“True”。 例如,如果使用 Microsoft ODBC Driver for SQL Server,则连接字符串应指定 Encrypt=yes;

使用由内部 CA 颁发的证书或使用 New-SelfSignedCertificate 或 makecert 创建的证书

场景 1:你想要加密与 SQL Server 的所有连接

在完成配置 SQL Server 数据库引擎以加密连接中记录的步骤 1:配置 SQL Server 以使用证书步骤 2:在 SQL Server 中配置加密设置中的过程之后,使用以下选项之一配置客户端应用程序以进行加密。

选项 1:将客户端应用程序配置为“信任服务器证书”。 此设置会导致客户端跳过验证服务器证书的步骤,并继续执行加密过程。 例如,如果使用 SQL Server Management Studio (SSMS) 20 及更高版本,则可以在登录页上(或早期版本中的“选项”页上)选择信任服务器证书

选项 2:在每个客户端上,通过执行以下步骤,将证书的颁发机构添加到受信任的根颁发机构存储:

  1. 使用导出服务器证书中所述的过程,从运行 SQL Server 的计算机导出证书。

  2. 使用导出和导入证书中记录的过程导入证书。

场景 2:仅某些客户端需要加密连接

在按照配置 SQL Server 数据库引擎以加密连接中的步骤 1:配置 SQL Server 以使用证书中所述为 SQL Server 配置证书之后,使用以下选项之一配置客户端应用程序以进行加密:

选项 1:将客户端应用程序配置为信任服务器证书,并将连接属性中的加密关键字指定为“是”或“True”。 例如,如果使用 Microsoft ODBC Driver for SQL Server,则连接字符串应指定 Encrypt=Yes;TrustServerCertificate=Yes;

有关服务器证书和加密的详细信息,请参阅使用 TrustServerCertificate

选项 2:在每个客户端上,将证书的颁发机构添加到受信任的根颁发机构存储,并在连接字符串中将加密参数指定为“是”:

  1. 使用从运行 SQL Server 的计算机导出证书中所述的过程,从运行 SQL Server 的计算机导出证书。

  2. 导入证书

  3. 将连接属性中的加密关键字指定为“是”或“True”。 例如,如果使用 Microsoft OLEDB Driver for SQL Server,则连接字符串应指定 Use Encryption for Data = True;

使用由 SQL Server 自动创建的自签名证书

场景 1:你想要加密与 SQL Server 的所有传入连接

  1. 使用配置 SQL Server 数据库引擎以加密连接中记录的过程步骤 2:在 SQL Server 中配置加密设置在 SQL Server 上启用加密。

  2. 将客户端应用程序配置为信任服务器证书。 信任服务器证书会导致客户端跳过验证服务器证书的步骤,并继续执行加密过程。 例如,如果使用 SQL Server Management Studio (SSMS) 20 及更高版本,则可以在登录页上(或早期版本中的“选项”页上)选择信任服务器证书

场景 2:仅某些客户端需要加密连接

将客户端应用程序配置为信任服务器证书,并将连接属性中的加密关键字指定为“是”或“True”。 例如,如果使用 Microsoft ODBC Driver for SQL Server,则连接字符串应指定 Encrypt=Yes;TrustServerCertificate=Yes;

对于此场景,无需在 SQL Server 上进行额外配置。

警告

使用自签名证书加密的 SSL 连接不提供强安全性,因为自签名证书中密钥的长度短于 CA 生成的证书中的密钥。 它们易遭受中间人攻击。 不得在生产环境中或在连接到 Internet 的服务器上依赖使用自签名证书的 SSL。