安全套接字层 (SSL) 是一套提供身份验证、保密性和数据完整性的加密技术。SSL 最常用来在 Web 浏览器和 Web 服务器之间建立安全通信通道。然而,还可以使用 SSL 来保护客户端应用程序(直接调用方)与 Microsoft® SQL Server™ 2000 之间的通信。
本章介绍如何将 SQL Server 2000 配置为使用 SSL 确保与客户端应用程序进行安全通信。
您必须了解的背景知识
在开始学习本章之前,您应该知道:
| • |
SSL 是使用 Internet 协议安全性 (IPSec) 来确保数据库通信安全的替代方法。 |
||||
| • |
当客户端或服务器 IP 地址发生更改时,并不需要更改配置。这一点与 IPSec 不同。 |
||||
| • |
必须在数据库服务器计算机上安装服务器证书,SSL 才能运行。客户端计算机上还必须有来自同一机构的根证书颁发机构 (CA) 证书。 |
||||
| • |
客户端必须已经安装了 SQL Server 2000 连接库。早期版本或通用库会无法运行。 |
||||
| • |
SSL 只适用于 TCP/IP(为 SQL Server 推荐采用的通信协议)和命名管道。 |
||||
| • |
您可以将服务器配置为对所有连接强制使用加密。 |
||||
| • |
您可以在客户端上执行以下操作:
|
安装服务器验证证书
SSL 要求服务器拥有由所连接的客户端信任的证书颁发机构 (CA) 颁发的服务器身份验证证书。
| • |
安装服务器证书
|
验证证书是否已安装
此过程验证是否已成功安装服务器证书。
| • |
验证证书是否已安装
|
在客户端安装 CA 颁发的证书
安装证书并重新启动 SQL Server 服务后,SQL Server 就可以与客户端协商 SSL。使用 SSL 连接到 SQL Server 的客户端必须:
| • |
已安装 MDAC 2.6 或 SQL Server 2000 连接库。 |
| • |
信任 SQL Server 的证书颁发者。 |
| • |
在客户端计算机上安装 CA 颁发的证书
|
强制所有客户端使用 SSL
可以将服务器配置为强制所有客户端使用 SSL(如此过程所述),或者可以让客户端选择是否按连接使用 SSL(如下一过程所述)。配置服务器强制客户端使用 SSL 的优点是:
| • |
保证了所有通信的安全。 |
| • |
拒绝任何不安全的连接。 |
缺点是:
| • |
所有客户端必须安装了 MDAC 2.6 或 SQL Server 2000 连接库;早期版本或通用库将无法连接。 |
| • |
不需要保护的连接由于额外的加密,性能开销会有所增加。 |
| • |
强制所有客户端使用 SSL
|
允许客户端决定是否使用 SSL
此过程说明如何配置 SSL 以允许客户端选择是否使用 SSL。可以将客户端库配置为对于所有连接强制使用 SSL,或者可以让各应用程序在每个连接的基础上进行选择。配置客户端的优点在于:
| • |
只有确实需要 SSL 的连接才会产生 SSL 系统开销。 |
| • |
不支持在 SQL Server 中使用 SSL 的客户端仍然可以连接。 |
如果采用此方法,应确保您允许存在不安全的连接。
| • |
重新配置服务器
|
| • |
对所有客户端连接使用 SSL |
使用这一方法,您可以将客户端库配置为对所有连接都使用 SSL。这意味着将不能访问不支持加密的 SQL Server 和 SQL Server 2000 之前的 SQL Server 版本。
|
1. |
在“Microsoft SQL Server”程序组中,单击“客户端网络实用工具”。 |
|
2. |
确保启用了 TCP/IP 和/或命名管道。 |
|
3. |
选择“强制协议加密”。 |
| • |
允许应用程序选择是否使用加密 |
在此方法中,应用程序使用连接字符串来决定是否使用加密。这允许每个应用程序仅在需要时才使用加密。
|
1. |
如果使用 OLE-DB 数据提供程序连接到 SQL Server,请将“对数据使用加密”设置为“true”,如下面的 OLE-DB 连接字符串示例所示。 "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=sql01;Use Encryption for Data=True" |
|
2. |
如果使用 SQL Server .NET 数据提供程序连接到 SQL Server,请将“加密”设置为“true”,如下例所示。 "Server=sql01;Integrated Security=SSPI;Persist Security Info=False;Database=Northwind;Encrypt=True" |
验证通信是否已加密
在此过程中,将使用网络监视器来验证在应用程序服务器与数据库服务器之间传送的数据是否已加密。首先以明文形式发送数据,然后通过先配置服务器,再配置客户端来启用加密。
| • |
验证通信是否已加密
|

