如何使用SSL 实现SQL Server 2000 的安全通信
本页内容
摘要
预备知识
安装一个服务器身份验证证书
验证证书是否已安装
将发证CA 的证书安装在客户端上
强制所有客户端使用SSL
允许客户端决定是否使用SSL
验证通信是否已被加密
其他资源
摘要
安全套接字层(SSL) 是一组可提供身份验证、保密性和数据完整性的加密技术。SSL 最常用于在Web 浏览器和Web 服务器之间创建一个安全通信信道。然而,SSL 也可以用于保护客户端应用程序(直接调用方)和Microsoft SQL Server 2000 之间的通信。
此模块描述了如何配置SQL Server 2000 来使用SSL 以确保与客户端应用程序进行安全的通信。
返回页首
预备知识
在开始使用本模块之前,应了解下列内容:
∙SSL 可替代Internet 协议安全(IPSec) 对数据库流量进行保护。
有关如何使用IPSec 来保护数据库流量的详细信息,请参阅“How To Use IPSec to Provide Secure
Communication Between Two Servers”。
∙与IPSec 不同,如果客户端或服务器IP 地址更改了,也并非一定要更改配置。
∙为了使SSL 能够正常工作,必须在数据库服务器计算机上安装一个服务器证书。客户端计算机还必须有一个来自同一证书颁发机构的根证书颁发机构(CA) 证书。
∙客户端必须安装有SQL Server 2000 连接库。较低版本或通用库都不起作用。
∙SSL 仅适用于TCP/IP(SQL Server 的建议通信协议)和命名管道。
∙可以对服务器进行配置,以便对所有连接强制使用加密。
∙在客户端上,可以:
∙对所有输出连接强制使用加密。
∙允许客户端应用程序通过使用连接字符串来选择是否对各个连接使用加密。
返回页首
安装一个服务器身份验证证书
SSL 要求服务器拥有一个连接客户端信任的证书颁发机构(CA) 所颁发的服务器身份验证证书。
要安装一个服务器证书,请执行下列操作:
1.使用管理员帐户登录到数据库服务器计算机。
2.启动Internet Explorer 并浏览到Microsoft 证书服务,例如:
3.MyCA/certsrv
4.
5.单击Request a certificate,然后单击Next。
6.单击Advanced request,然后单击Next。
7.单击Submit a certificate request to this CA using a form,然后单击Next。
8.填写证书请求窗体,同时注意以下几点:
a.将运行SQL Server 的计算机的完全限定域名输入到Name字段。例如:
b.sql01.nwtraders
c.
d.在Intended Purpose(或Type of Certificate Needed)字段中,单击Server Authentication
Certificate。
e.对于加密服务提供程序(CSP),单击Microsoft RSA SChannel Cryptographic Provider。
注也可以使用Microsoft Base Cryptographic Provider 1.0 和Microsoft Enhanced Cryptographic
Provider。但不能用Microsoft Strong Cryptographic Provider。
f.选中Use local machine store复选框。
注不要选中Enable strong private key protection。
9.单击Submit提交申请。
如果证书服务器自动颁发证书,则可以立即安装证书。否则可以在CA 管理员颁发证书后安装它,方法是浏览到Microsoft 证书服务并选择Check on a pending certificate。
返回页首
验证证书是否已安装
此过程验证是否已经成功地安装了服务器证书。
要验证证书是否已经安装,请执行下列操作:
1.在任务栏上,单击Start按钮,然后单击Run。
2.键入mmc,然后单击OK。
3.在Console菜单上,单击Add/Remove Snap-in。
4.单击Add。
5.单击Certificates,然后单击Add。
6.单击Computer account,然后单击Next。
7.确保选中Local computer: (the computer this console is running on),然后单击Finish。
8.单击Close,然后单击OK。
9.在左窗格树视图中,展开Certificates (Local Computer),展开Personal,然后选择Certificates。
10.验证是否确实存在一个具有前一过程中指定的完全限定域名的证书。可以双击此证书来查看其详细信息。返回页首
将发证CA 的证书安装在客户端上
在安装完证书且重新启动SQL Server 服务后,SQL Server 可以与客户端协商SSL。使用SSL 连接到SQL Server 的客户端必须:
∙安装MDAC 2.6 或SQL Server 2000 连接库。
∙信任SQL Server 的证书的颁发者。
要将发证CA 的证书安装到客户端计算机,请执行下列操作:
1.以管理员身份登录到客户端计算机。
2.启动Internet Explorer 并浏览到Microsoft 证书服务,例如:
3.MyCA/certsrv
4.
5.单击Retrieve the CA certificate or certificate revocation list,然后单击Next。
6.单击Install this CA certification path,然后在确认对话框中单击Yes即可安装根证书。
返回页首
强制所有客户端使用SSL
您可以对服务器进行配置,以强制所有客户端使用SSL(如此过程中所描述),或者让客户端选择是否针对各个连接来使用SSL(如下一过程中所述)。将服务器配置为强制客户端使用SSL 的优点是:
∙保证所有的通信都是安全的。
∙拒绝任何未受安全保护的连接。
缺点是:
∙所有客户端都必须安装MDAC 2.6 或SQL Server 2000 连接库,较低版本的库或通用库将不能连接。
∙您不需要保护的连接由于其加密而增加性能开销。
要强制所有客户端使用SSL,请执行下列操作:
1.在运行SQL Server 的计算机上,单击Microsoft SQL Server程序组中的Server Network Utility。
2.单击选择Force protocol encryption。
3.验证TCP/IP 和/或命名管道是否已经启用。
其他协议不支持SSL。
4.单击OK关闭SQL Server 网络实用工具,然后在SQL Server Network Utility消息框中单击OK。
5.重新启动SQL Server 服务。
所有后续的客户端连接无论是否指定了安全连接,都将被要求使用SSL。
返回页首
允许客户端决定是否使用SSL
此过程介绍了如何配置SSL 以允许客户端能够选择是否使用SSL。您可以将客户端库配置为对所有连接强制使用SSL,也可以让各个应用程序对各个连接选择是否使用SSL。配置客户端的优点是:
∙只有真正需要SSL 的连接才会产生SSL 开销。
∙不支持SQL Server 的SSL 的客户端仍可以连接。
如果采用这种方法,则确保您原意采用未受保护的连接。
要重新配置服务器,请执行下列操作:
1.在运行SQL Server 的计算机上,运行Server Network Utility。
2.清除Force protocol encryption 复选框。
3.重新启动SQL Server 服务。
4.返回到客户端计算机。
要对所有客户端连接使用SSL,请执行下列操作:
采用这种方法时,要将客户端库配置为对所有连接使用SSL。这意味着将不能访问不支持加密和早于SQL Server 2000 的SQL Server。
1.在Microsoft SQL Server程序组中,单击Client Network Utility。
2.确保TCP/IP 和/或命名管道已经启用。
3.选择Force protocol encryption。
如何安装sql server 2000要允许应用程序选择是否使用加密,请执行下列操作:
采用这种方法时,应用程序使用连接字符串来决定是否使用加密。这使得每个应用程序仅在需要时使用加密。
1.如果使用OLE-DB 数据提供程序来连接到SQL Server,需要将Use Encryption for Data设置为true,如下
面的示例OLE-DB 连接字符串中所示。
2."Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security
Info=False;Initial Catalog=Northwind;Data Source=sql01;Use
Encryption for Data=True"
3.
4.如果使用SQL Server .NET 数据提供程序来连接到SQL Server,需要将Encrypt设置为true,如下面的
示例
中所示。
5."Server=sql01;Integrated Security=SSPI;Persist Security
Info=False;Database=Northwind;Encrypt=True"
6.
返回页首
验证通信是否已被加密
此过程使用网络监视器来验证应用程序服务器和数据服务器之间发送的数据是否已被加密。首先以明文形式发送数据,然后依次配置服务器和客户端来启用加密。
要验证通信是否已被加密,请执行下列操作:
1.在客户端计算机上,使用Visual Studio .NET 来创建一个新的名为SQLSecureClient的C# 控制台应用程序。
2.将下列代码复制到class1.cs 替换现有的全部代码。
注应将连接字符串中的服务器名称替换为数据库服务器的名称。
using System;
using System.Data;
using System.Data.SqlClient;
namespace SQLSecureClient
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
// Replace the server name in the following connection string with the
// name of your database server
SqlConnection conn = new SqlConnection(
"server='sql01';database=NorthWind;Integrated
Security='SSPI'");
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论