数据库(SQL SERVER)通信加密配置与验证
一. 安装组件:
1. Certificate Service(认证服务):用于申请/颁发认证证书;
2. Management and Monitoring Tools(网络监视器):用于监控通信时采用明文还是密文。
二. 在服务器端计算器上申请/颁发/安装验证证书
安装好Certificate Service组件后,启动IIS,在预设的站点中可看到一个新的站点CertSrv,如下图:
打开该站点的首页:http://localhost/certsrv/ 如下图:
1).在首页点击“要求凭证”—》点击“进阶凭证要求”
2). 点击“向这个CA建立并提交一个要求”
3)在进阶要求中输入以下红色标注的信息,其它按默认设备,点击“提交”即完成了证书的申请,如下图:
(二).CA管理员颁发服务器验证证书
1)打开“凭证授权单位”系统工具,
如下图:
2)选择左侧菜单栏中的“搁置要求”,在右窗口中可看到刚申请的服务器验证证书。右键单击该证书,选择“所有工作”à发行,即完成了证书的颁发。
(三). 安装已发行的证书
1) 再次打开http://localhost/certsrv/ ,点击“检视搁置中的凭证要求状态”,如下图:
可看到您之前申请的服务器验证证书,此时的证书已得到CA管理员的发行,可点击安装。如下图:
2) 点击“安装这个凭证”即可完成证书的安装,如下图:
(四). 验证证书是否已安装
1)单击任务栏上的“开始”按钮,然后单击“运行”。
2)键入“mmc”,然后单击“确定”。
3)在“控制台”菜单上,单击“添加/删除管理单元”。
4)单击“添加”。
5)单击“证书”,然后单击“添加”。
6)单击“计算机帐户”,然后单击“下一步”。
7)确保选中了“本地计算机:(运行本控制台的计算机)”,然后单击“完成”。
8)单击“关闭”,然后单击“确定”。
9)在左窗格的树视图中,展开“证书(本地计算机)”,展开“个人”,然后选择“证书”。
10)验证是否确实有一个证书具有您在前一个过程中指定的完全限定域名。
如下图所示:
三. 在客户端计算器上安装 CA 颁发的证书
1.以管理员身份登录到客户端计算机
2.启动 Internet Explorer 并浏览到 Microsoft 证书服务http://localhost/certsrv/
3.单击“下载 CA 凭证、凭证链接或 CRL”,如下图:
4.点击“安装这个CA凭证链接”,如下图:
四. 在 SQL Server 2000上启用 SSL 加密(两种方式选其一即可)
(一)强制所有客户端使用 SSL
1.在服务器端计算机上,单击“Microsoft SQL Server”程序组中的“服务器网络实用工具”。
2.单击选择“强制协议加密”。
3.验证是否启用了 TCP/IP 和/或命名管道。
4.单击“确定”关闭 SQL Server 网络实用工具,然后在“SQL Server 网络实用工具”消息框中单击“确定”。
5.重新启动 SQL Server 服务。
设置完后,后续客户端所有连接,都将以密文传送,不论客户端是否指定安全连接(即Encrypt=True/False)
(二) 允许客户端决定是否使用 SSL
(即允许客户端选择是否使用 SSL,可以将客户端库配置为对于所有连接强制使用 SSL,或者可以让各应用程序在每个连接的基础上进行选择)
重新配置服务器端计算器
1.在服务器端计算机上,运行“Microsoft SQL Server”程序组中的“服务器网络实用工具”。
2.清除“强制协议加密”复选框。
3.重新启动 SQL Server 服务。
4.返回到客户端计算机
客户端计算器配置:
方法一: (将客户端库配置为对所有连接都使用 SSL)
1. 在“Microsoft SQL Server”程序组中,单击“客户端网络实用工具”。
2确保启用了 TCP/IP 和/或命名管道。
3. 选择“强制协议加密”。
方法二: (应用程序使用连接字符串来决定是否使用加密)
"Server=sql01;Integrated Security=SSPI;Persist Security
Info=False;Database=Northwind;Encrypt=True/False"
五. 在 SQL Server 2005上启用 SSL 加密(两种方式选其一即可)
(一)强制所有客户端使用 SSL
1. 单击“开始”,在 Microsoft SQL Server 2005 程序组中,指向“配置工具”,再单击“SQL Server 配置管理器”。
2. 展开“SQL Server 2005 网络配置”, 启用 TCP/IP 和/或命名管道,右键单击”SQLEXPRESS协议”,再单击“属性”。
3. 在“证书”选项卡上,配置数据库引擎以使用该证书。
4.在“标志”选项卡上,查看或指定协议加密选项。 应始终对登录数据包进行加密。
如果数据库引擎的 ForceEncryption 选项设置为“是”,则将加密所有客户端/服务器通信,并且拒绝无法支持加密的客户端的访问。
(如果数据库引擎的 ForceEncryption 选项设置为“否”,则客户端应用程序可以请求加密,但不是必需的。)
5. 重新启动 SQL Server。
(二) 允许客户端决定是否使用 SSL
若服务器端计算器数据库引擎的 ForceEncryption 选项设置为“否”, 则客户端应用程序可以使用连接字符串来决定是否使用加密:
"Server=sql01;Integrated Security=SSPI;Persist Security
Info=False;Database=Northwind;Encrypt=True/False"
(一)明文通信
1.在服务器端计算器上,确保未设置强制协议加密,
2.在客户端计算机上,使用 Visual Studio.NET 创建一个名为 SQLSecureClient 的新 C# 控制台应用程序。将下面的代码复制到 class1.cs,替换所有现有的代码。
注意:用数据库服务器的名称替换连接字符串中的服务器名。
4.在“捕获”菜单上,单击“筛选”创建新的筛选器,配置它以查看在应用程序服务器与数据库服务器之间发送的 TCP/IP 网络通信,为更清楚地查看服务器端与客户端之间的通信,可指定相互通信的IP地址,如下图:
5.单击“开始捕获”按纽。
6.返回到客户端计算机,然后运行测试控制台应用程序。Northwind 数据库的产品列表应显示在控制台窗口中。
返回到数据库服务器,然后单击网络监视器中的“停止并查看捕获”按钮。
双击第一个捕获的帧向下滚动以查看捕获的帧。此时能看到明文形式的 SELECT 语句,后面带有从该数据库检索到的产品列表。
1.按以上方法之一设置强制所有客户端使用 SSL(即在服务器端设置“强制协议加密”),或允许客户端决定是否使用 SSL(即服务器端不设置强制加密,客户端连接时设置强制加密),并重新启动 SQL Server 服务。
2.在服务器端计算器打开网络监视器,设置好筛选器,单击“开始捕获”按纽。
3.返回到客户端计算机,然后运行测试控制台应用程序。
4.返回到服务器端计算器,然后单击网络监视器中的“停止并查看捕获”按钮。
5.双击一个捕获的帧,向下滚动以查看捕获的帧,此时数据已变得难以看懂(因为已加密)。