加密与 SQL Server 的连接

更新日期: 2006 年 7 月 17 日

SQL Server 2005 支持安全套接字层 (SSL),并且与 Internet 协议安全 (IPsec) 兼容。

安全套接字层 (SSL)

Microsoft SQL Server 2005 可以使用安全套接字层 (SSL) 对通过网络在 SQL Server 实例与客户端应用程序之间传输的数据进行加密。 SSL 加密在协议层执行,并可用于除 DB Library 和 MDAC 2.53 客户端以外的所有 SQL Server 客户端。

客户端连接请求加密时,SSL 可用于服务器验证。 如果 SQL Server 实例在分配由公共证书颁发机构颁发的证书的计算机上运行,则计算机的标识和 SQL Server 实例的标识由受信任根颁发机构的证书链担保。 这种服务器验证要求将运行客户端应用程序的计算机配置为信任服务器所用的证书的根颁发机构。 也可以使用带有自签名的证书进行加密,如下一部分所述,但是自签名证书只能提供有限的保护。

SSL 使用的加密级别是 40 位还是 128 位,取决于应用程序和数据库计算机上运行的 Microsoft Windows 操作系统版本。

启用 SSL 加密将增强在 SQL Server 实例与应用程序之间通过网络传输的数据的安全性。 但是,启用加密的确会降低性能。 SQL Server 与客户端应用程序之间的所有通信流量都使用 SSL 加密时,还需要进行以下额外处理:

  • 连接时需要进行额外的网络往返。
  • 从应用程序发送到 SQL Server 实例的数据包必须由客户端网络库加密并由服务器端网络库解密。
  • 从 SQL Server 实例发送到应用程序的数据包必须由服务器端网络库加密并由客户端网络库解密。

配置 SQL Server 的 SSL

以下过程说明如何为 SQL Server 配置 SSL。

配置 SSL

  1. 在服务器的 Windows 证书存储区中安装一个证书。
  2. 单击**“开始”,在 Microsoft SQL Server 2005 程序组中,指向“配置工具”,再单击“SQL Server 配置管理器”**。
  3. 展开**“SQL Server 2005 网络配置”,右键单击所需的服务器协议,再单击“属性”**。
  4. 在**“证书”**选项卡上,配置数据库引擎以使用该证书。
  5. 在**“标志”**选项卡上,查看或指定协议加密选项。 应始终对登录数据包进行加密。
    • 如果数据库引擎的 ForceEncryption 选项设置为**“是”**,则将加密所有客户端/服务器通信,并且拒绝无法支持加密的客户端的访问。
    • 如果数据库引擎的 ForceEncryption 选项设置为**“否”**,则客户端应用程序可以请求加密,但不是必需的。
    • 更改 ForceEncryption 设置后,必须重新启动 SQL Server。

始终要对客户端应用程序与 SQL Server 2005 连接时传输的凭据(在登录数据包中)进行加密。SQL Server 将使用可信证书颁发机构颁发的证书(如果可用)。 如果未安装可信证书,则在启动实例时 SQL Server 将生成自签名证书,并使用自签名证书对凭据进行加密。 此自签名证书有助于提高安全性,但它不能防范由服务器发出的标识欺骗。 如果使用自签名证书,并且 ForceEncryption 选项的值设置为**“是”**,则将使用自签名证书对通过网络在 SQL Server 和客户端应用程序之间传输的所有数据进行加密。

ms189067.Caution(zh-cn,SQL.90).gif注意:
使用自签名证书加密的 SSL 连接不提供强安全性。 它们容易在传输中途受到攻击。 在生产环境中或在连接到 Internet 的服务器上,不应依赖使用自签名证书的 SSL。

证书要求

若要 SQL Server 2005 加载 SSL 证书,则该证书必须满足以下条件:

  • 该证书必须位于本地计算机证书存储区中,或者位于当前用户证书存储区中。
  • 当前系统时间必须在证书 Valid from 属性之后,证书 Valid to 属性之前。
  • 该证书必须用于服务器身份验证。 这要求使用该证书的增强型密钥用法属性指定服务器身份验证 (1.3.6.1.5.5.7.3.1)
  • 必须使用 AT_KEYEXCHANGEKeySpec 选项创建该证书。 通常,证书的密钥用法属性 (KEY_USAGE) 还将包括密钥加密 (CERT_KEY_ENCIPHERMENT_KEY_USAGE)。
  • 证书的 Subject 属性必须指明公用名称 (CN) 与主机名或服务器完全限定的域名一样。 如果 SQL Server 在故障转移群集中运行,则公用名称必须与虚拟服务器的主机名或 FQDN 相同,并且在故障转移群集的所有节点上都必须提供这些证书。

对群集进行加密

若要在故障转移群集中使用加密,必须在故障转移群集中的所有节点上安装具有故障转移群集实例完全限定 DNS 名称的服务器证书。 例如,如果有一个双节点群集,节点名分别为 test1.your company.comtest2.your company.com,并且还有一个名为 fcisql 的 SQL Server 故障转移群集实例,则必须获得 fcisql.your company.com 的证书,并在两个节点上都安装此证书。 若要为加密配置故障转移群集,可以在**“SQL Server 2005 网络配置”“<服务器> 协议”**属性框中选中 ForceEncryption 复选框。

Internet 协议安全 (IPSec)

可以使用 IPsec 在传输过程中对 SQL Server 数据进行加密。 IPsec 是由客户端和服务器操作系统提供的,不需要进行 SQL Server 配置。 有关 IPsec 的信息,请参阅 Windows 文档或网络文档。

更改历史记录

发布日期 历史记录

2006 年 7 月 17 日

新增内容:
  • 添加了有效证书的相关要求。

请参阅

任务

如何启用数据库引擎的加密连接(SQL Server 配置管理器)

帮助和信息

获取 SQL Server 2005 帮助