如何使用SSL来确保与SQL Server 2000安全通信
安全套接字层 (SSL) 是一套提供身份验证、保密性和数据完整性的加密技术。SSL 最常用来在 Web 浏览器和 Web 服务器之间建立安全通信通道。然而,还可以使用 SSL 来保护客户端应用程序(直接调用方)与 Microsoft® SQL Server™ 2000 之间的通信。
本章介绍如何将 SQL Server 2000 配置为使用 SSL 确保与客户端应用程序进行安全通信。
您必须了解的背景知识
在开始学习本章之前,您应该知道:
•SSL 是使用 Internet 协议安全性 (IPSec) 来确保数据库通信安全的替代方法。
有关如何使用 IPSec 确保数据库通信安全的详细信息,请参见本指南中的如何使用 IPSec 在两个服务器之间进行安全通信。
•当客户端或服务器 IP 地址发生更改时,并不需要更改配置。这一点与 IPSec 不同。
•必须在数据库服务器计算机上安装服务器证书,SSL 才能运行。客户端计算机上还必须有来自同一机构的根证书颁发机构 (CA) 证书。
•客户端必须已经安装了 SQL Server 2000 连接库。早期版本或通用库会无法运行。
•SSL 只适用于 TCP/IP(为 SQL Server 推荐采用的通信协议)和命名管道。
•您可以将服务器配置为对所有连接强制使用加密。
•您可以在客户端上执行以下操作:
•强制对所有传出连接进行加密。
•通过使用连接字符串,允许客户端应用程序选择是否按连接进行加密。
安装服务器验证证书
SSL 要求服务器拥有由所连接的客户端信任的证书颁发机构 (CA) 颁发的服务器身份验证证书。
•安装服务器证书
1使用管理员帐户登录到数据库服务器计算机。
2启动 Internet Explorer 并浏览到 Microsoft 证书服务,例如:
http://MyCA/certsrv
3单击“申请一个证书”,然后单击“下一步”。
4单击“高级申请”,然后单击“下一步”。
5单击“使用表格向这个 CA 提交一个证书申请”,然后单击“下一步”。
6填写证书申请表,指明以下几点:
1在“名称”字段中,输入运行 SQL Server 的计算机的完全限定域名。例如:
sql01nwtraderscom
2在“预期目的”(或“需要的证书类型”)字段中,单击“服务器身份验证证书”。
3对于加密服务提供程序 (CSP),单击“Microsoft RSA 通道加密提供程序”。
注意:Microsoft 基本加密提供程序 10 版和 Microsoft 增强加密提供程序同样有效。而 Microsoft 强加密提供程序无效。
4选择“使用本地机器保存”复选框。
注意:不要选择“启用强私钥保护”。
7单击“提交”提交申请。
如果证书服务器自动颁发证书,则可以立即安装证书。否则,可以浏览到 Microsoft 证书服务并选择“检查挂起的证书”,在 CA 管理员颁发证书之后安装证书。
验证证书是否已安装
此过程验证是否已成功安装服务器证书。
•验证证书是否已安装
1单击任务栏上的“开始”按钮,然后单击“运行”。
2键入“mmc”,然后单击“确定”。
3在“控制台”菜单上,单击“添加/删除管理单元”。
4单击“添加”。
5单击“证书”,然后单击“添加”。
6单击“计算机帐户”,然后单击“下一步”。
7确保选中了“本地计算机:(运行本控制台的计算机)”,然后单击“完成”。
8单击“关闭”,然后单击“确定”。
9在左窗格的树视图中,展开“证书(本地计算机)”,展开“个人”,然后选择“证书”。
10验证是否确实有一个证书具有您在前一个过程中指定的完全限定域名。
可以双击证书查看它的详细信息。
在客户端安装 CA 颁发的证书
安装证书并重新启动 SQL Server 服务后,SQL Server 就可以与客户端协商 SSL。使用 SSL 连接到 SQL Server 的客户端必须:
•已安装 MDAC 26 或 SQL Server 2000 连接库。
•信任 SQL Server 的证书颁发者。
•在客户端计算机上安装 CA 颁发的证书
1以管理员身份登录到客户端计算机。
2启动 Internet Explorer 并浏览到 Microsoft 证书服务,例如:
http://MyCA/certsrv
3单击“检索 CA 证书或证书吊销列表”,然后单击“下一步”。
4单击“安装此 CA 证书路径”,然后在确认对话框中单击“是”以安装根证书。
强制所有客户端使用 SSL
可以将服务器配置为强制所有客户端使用 SSL(如此过程所述),或者可以让客户端选择是否按连接使用 SSL(如下一过程所述)。配置服务器强制客户端使用 SSL 的优点是:
•保证了所有通信的安全。
•拒绝任何不安全的连接。
缺点是:
•所有客户端必须安装了 MDAC 26 或 SQL Server 2000 连接库;早期版本或通用库将无法连接。
•不需要保护的连接由于额外的加密,性能开销会有所增加。
•强制所有客户端使用 SSL
1在运行 SQL Server 的计算机上,单击“Microsoft SQL Server”程序组中的“服务器网络实用工具”。
2单击选择“强制协议加密”。
3验证是否启用了 TCP/IP 和/或命名管道。
其他协议不支持 SSL。
4单击“确定”关闭 SQL Server 网络实用工具,然后在“SQL Server 网络实用工具”消息框中单击“确定”。
5重新启动 SQL Server 服务。
所有后续客户端连接都会被要求使用 SSL,无论它们是否指定安全连接。
允许客户端决定是否使用 SSL
此过程说明如何配置 SSL 以允许客户端选择是否使用 SSL。可以将客户端库配置为对于所有连接强制使用 SSL,或者可以让各应用程序在每个连接的基础上进行选择。配置客户端的优点在于:
•只有确实需要 SSL 的连接才会产生 SSL 系统开销。
•不支持在 SQL Server 中使用 SSL 的客户端仍然可以连接。
如果采用此方法,应确保您允许存在不安全的连接。
•重新配置服务器
1在运行 SQL Server 的计算机上,运行“服务器网络实用工具”。
2清除“强制协议加密”复选框。
3重新启动 SQL Server 服务。
4返回到客户端计算机。
•对所有客户端连接使用 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=SQLOLEDB1;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"
验证通信是否已加密
在此过程中,将使用网络监视器来验证在应用程序服务器与数据库服务器之间传送的数据是否已加密。首先以明文形式发送数据,然后通过先配置服务器,再配置客户端来启用加密。
•验证通信是否已加密
1在客户端计算机上,使用 Visual StudioNET 创建一个名为 SQLSecureClient 的新 C# 控制台应用程序。
2将下面的代码复制到 class1cs,替换所有现有的代码。
注意:用数据库服务器的名称替换连接字符串中的服务器名。
using System;
using SystemData;
using SystemDataSqlClient;
namespace SQLSecureClient
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
// 使用您的数据库服务器的名称替换
以下连接
// 字符串中的服务器名称
SqlConnection conn = new SqlConnection(
"server='sql01';database=NorthWind;Integrated Security='SSPI'");
SqlCommand cmd = new SqlCommand("Select FROM
Products"); try
{
connOpen();
cmdConnection = conn;
SqlDataReader reader = cmdExecuteReader();
while (readerRead())
{
ConsoleWriteLine("{0} {1}",
readerGetInt32(0)ToString(),
readerGetString(1) );
}
readerClose();
}
catch( Exception ex)
{
}
finally
{
connClose();
}
}
}
}
3在“生成”菜单上,单击“生成解决方案”。
4为了使两台计算机之间的 Windows 身份验证取得成功,必须在数据库服务器计算机上复制当前以交互方式登录到客户端计算机所用的帐户。确保用户名和密码都匹配。另一种方法是使用两台计算机都可识别的域帐户。
还必须使用 SQL Server 企业级管理器为新创建的帐户创建一个数据库登录,并在 Northwind 数据库中为此登录添加一个新的数据库用户。
5在数据库服务器计算机上,使用 SQL Server 网络实用工具禁用加密(确保未选择“强制协议加密”选项)。
6在数据库服务器计算机上,单击“管理工具”程序组中的“网络监视器”。
注意:Windows 2000 Server 提供网络监视器的限制版。Microsoft SMS 提供网络监视器的完全版。
如果您没有安装网络监视器,请转到控制面板中的“添加或删除程序”,单击“添加/删除 Windows 组件”,从“Windows 组件”列表中选择“管理和监视工具”,单击“详细信息”,然后单击“网络监视工具”。单击“确定”,然后单击“下一步”安装网络监视器的限制版。可能会提示您插入 Windows 2000 Server CD。
7在“捕获”菜单上,单击“筛选”创建新的筛选器,配置它以查看在应用程序服务器与数据库服务器之间发送的 TCP/IP 网络通信。
8单击“开始捕获”按纽。
9返回到客户端计算机,然后运行测试控制台应用程序。Northwind 数据库的产品列表应显示在控制台窗口中。
10返回到数据库服务器,然后单击网络监视器中的“停止并查看捕获”按钮。
11双击第一个捕获的帧以查看捕获的数据。
12向下滚动以查看捕获的帧。您应该能看到明文形式的 Select 语句,后面带有从该数据库检索到的产品列表。
13现在,使用 SQL Server 网络实用工具配置服务器,强制所有连接使用加密:
1使用 SQL Server 网络实用工具选择“强制协议加密”。
2停止并重新启动 SQL Server 服务。
14返回网络监视器并单击“开始捕获”按钮。在“保存文件”对话框中,单击“否”。
15返回到客户端计算机,然后再次运行测试控制台应用程序。
16返回到数据库服务器计算机,然后单击网络监视器中的“停止并查看捕获”。
17确认数据现在已变得难以看懂(因为已加密)。
18重新配置服务器,取消强制加密:
1使用 SQL Server 网络实用工具并清除“强制协议加密”复选框。
2停止并重新启动 SQL Server 服务。
19在网络监视器中开始新的捕获并重新运行客户端应用程序。确认数据再次成为明文。
20返回到客户端计算机,从“Microsoft SQL Server”程序组中选择“客户端网络实用工具”。
21选择“强制协议加密”,然后单击“确定”关闭客户端网络实用工具。
22返回网络监视器并单击“开始捕获”按钮。在“保存文件”对话框中,单击“否”。
23返回到客户端计算机,然后再次运行测试控制台应用程序。
24返回到数据库服务器计算机,然后单击网络监视器中的“停止并查看捕获”。
25确认数据现在已经难以看懂(因为已加密)。
请注意,在所有情况下,SQL Server 在通信序列开始时都将其服务器身份验证证书以明文形式发送到客户端。这是 SSL 协议的一部分。还要注意,即使服务器和客户端都不需要加密,这也会发生。
默认情况下,IIS使用HTTP协议以明文形式传输数据,没有采取任何加密措施,用户的重要数据很容易被窃取,如何才能保护局域网中的这些重要数据呢下面笔者就介绍一下如何使用SSL增强IIS服务器的通信安全。
一、什么是SSL
SSL(Security Socket Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安全性,同时SSL安全机制是依靠数字证书来实现的。
SSL基于公用密钥和私人密钥,用户使用公用密钥来加密数据,但解密数据必须使用相应的私人密钥。使用SSL安全机制的通信过程如下:用户与IIS服务器建立连接后,服务器会把数字证书与公用密钥发送给用户,用户端生成会话密钥,并用公共密钥对会话密钥进行加密,然后传递给服务器,服务器端用私人密钥进行解密,这样,用户端和服务器端就建立了一条安全通道,只有SSL允许的用户才能与IIS服务器进行通信。
提示:SSL网站不同于一般的Web站点,它使用的是“HTTPS”协议,而不是普通的“HTTP”协议。因此它的URL(统一资源定位器)格式为“https://网站域名”。
二、安装证书服务
要想使用SSL安全机制功能,首先必须为Windows Server 2003系统安装证书服务。
进入“控制面板”,运行“添加或删除程序”,接着进入“Windows组件向导”对话框,勾选“证书服务”选项,点击“下一步”按钮,接着选择CA类型。这里选择“独立根CA”,点击“下一步”按钮,为自己的CA服务器取个名字,设置证书的有效期限,最后指定证书数据库和证书数据库日志的位置,就可完成证书服务的安装。
三、配置SSL网站
1创建请求证书文件
完成了证书服务的安装后,就可以为要使用SSL安全机制的网站创建请求证书文件。点击“控制面板→管理工具”,运行“Internet 信息服务-IIS 管理器”,在管理器窗口中展开“网站”目录,右键点击要使用SSL的网站,选择“属性”选项,在网站属性对话框中切换到“目录安全性”标签页(图1),然后点击“服务器证书”按钮。在“IIS证书向导”对话框中选择“新建证书”,点击“下一步”按钮,选择“现在准备证书请求,但稍后发送”。在“名称”输入框中为该证书取名,然后在“位长”下拉列表中选择密钥的位长。接着设置证书的单位、部门、站点公用名称和地理信息,最后指定请求证书文件的保存位置。这样就完成了请求证书文件的创建。
2申请服务器证书
完成上述设置后,还要把创建的请求证书文件提交给证书服务器。在服务器端的IE浏览器地址栏中输入“http://localhost/CertSrv/defaultasp”。在“Microsoft 证书服务”欢迎窗口中点击“申请一个证书”链接,接下来在证书申请类型中点击“高级证书申请”链接,然后在高级证书申请窗口中点击“使用BASE64编码的CMC或PKCS#10”链接,再打开刚刚生成的“certreqtxt”文件,将其中的内容复制到“保存的申请”输入框后点击“提交”按钮即可。
3颁发服务器证书
点击“控制面板→管理工具”,运行“证书颁发机构”。在主窗口中展开树状目录,点击“挂起的申请”项(图2),找到刚才申请的证书,然后右键点击该项,选择“所有任务→颁发”。颁发成功后,点击树状目录中的“颁发的证书”项,双击刚才颁发的证书,在弹出的“证书”对话框的“详细信息”标签页中,点击“复制到文件”按钮,弹出证书导出向导,连续点击“下一步”按钮,并在“要导出的文件”对话框中指定文件名,最后点击“完成”。
4安装服务器证书
重新进入IIS管理器的“目录安全性”标签页,点击“服务器证书”按钮,弹出“挂起的证书请求”对话框,选择“处理挂起的请求并安装证书”选项,点击“下一步”按钮,指定刚才导出的服务器证书文件的位置,接着设置SSL端口,使用默认的“443”即可,最后点击“完成”按钮。
在“目录安全性”标签页,点击安全通信栏的“编辑”按钮,勾选“要求安全通道(SSL)”选项,最后点击“确定”按钮即可启用SSL。
在完成了对SSL网站的配置后,用户只要在IE浏览器中输入“https://网站域名”就能访问该网站
了解连接安全规则
应用到: Windows 7, Windows Server 2008 R2连接安全包括在两台计算机开始通信之前对它们进行身份验证,并确保在两台计算机之间发送的信息的安全性。高级安全 Windows 防火墙使用 Internet 协议安全 (IPsec) 实现连接安全,方法是使用密钥交换、身份验证、数据完整性和数据加密(可选)。
注意
与单方面操作的防火墙规则不同,连接安全规则要求通信的双方计算机都具有采用连接安全规则的策略或其他兼容的 IPSec 策略。
连接安全规则使用 IPsec 确保其通过网络时的流量安全。使用连接安全规则指定必须对两台计算机之间的连接进行身份验证或加密。可能还要必须创建防火墙规则以允许由连接安全规则保护的网络流量。
0条评论