构建安全的 ASP.NET 应用程序
身份验证、授权和安全通信
身份验证、授权和安全通信
有关构建安全的 ASP.NET 应用程序 的起点和完整概述,请参见登陆页面。
总结
应用程序能够保护与 SQL Server 数据库服务器之间传送的数据通常至关重要。在 SQL Server 2000 中,可以使用 SSL 创建加密通道。本“如何做”说明如何在数据库服务器上安装证书、如何配置 SQL Server 使用 SSL,以及如何验证通道是否安全。
如何做:使用 SSL 确保与 SQL Server 2000 安全通信
可以使用安全套接字层 (SSL) 协议来保护客户端(直接调用方)和 Microsoft® SQL Server™ 2000 之间的通信链接。当配置 SQL Server 使用 SSL 时,可以加密客户端和服务器之间(或相反)的所有数据传输,以确保数据在客户端和 SQL Server 之间传送时保持机密。
备注
● SSL 是使用 IPSec 确保数据库通信安全的替代方法。
有关如何使用 IPSec 确保数据库通信安全的详细信息,请参见本指南“参考”部分的“如何做:使用 IPSec 以便在两台服务器之间安全通信”。
● 与 IPSec 不同,如果客户端或服务器 IP 地址发生更改,并不要求配置更改。
● 必须在数据库服务器计算机上安装服务器证书,SSL 才能运行。客户端计算机上还必须有来自同一机构的根证书颁发机构 (CA) 证书。
● 客户端必须已经安装了 SQL Server 2000 连接库。早期版本或通用库将无法运行。
● SSL 只能对 TCP/IP(SQL Server 的推荐通信协议)和命名管道起作用。
● 可以将服务器配置为对所有连接强制使用加密。
● 在客户端,您可以:
● 强制对所有传出连接加密。
● 通过使用连接字符串,允许客户端应用程序选择是否对每个连接都使用加密。
要求
以下各项介绍了推荐的硬件、软件、网络基础结构、技巧和知识以及您需要的服务包。
● 两台运行 Microsoft Windows® 2000 Server 操作系统的计算机。
● 数据库服务器计算机上要有 SQL Server 2000。在此例中,假设 SQL Server 服务作为“本地系统”运行。如果证书在“本地机器”存储中,无论 SQL 在哪一个帐户下运行,SSL 都应该有效。
● 客户机上要有Microsoft 数据访问组件 (MDAC) 2.6 或更高版本,或者 SQL Server 2000 客户端连接库。
● 此例需要访问在 Windows 2000 上运行的 Microsoft 证书服务以便创建服务器身份验证证书,但这不是必要条件。
总结
本“如何做”包括如下过程:
1. 安装服务器验证证书
2. 验证证书是否已安装
3. 在客户端上安装颁发的 CA 证书
4. 强制所有客户端使用 SSL
5. 允许客户端决定是否使用 SSL
6. 验证通信是否已加密
1. 安装服务器验证证书
SSL 要求服务器拥有由连接客户端所信任的证书颁发机构 (CA) 颁发的服务器身份验证证书。
u 安装服务器证书
1. 使用管理员帐户登录到数据库服务器计算机。
2. 启动 Internet Explorer 并浏览到 Microsoft 证书服务,例如:
MyCA/certsrv
3. 单击“请求证书”,然后单击“下一步”。
4. 单击“高级申请”,然后单击“下一步”。
5. 单击“使用表格向这个 CA 提交一个证书申请”,然后单击“下一步”。
6. 填写证书申请表,指明以下几点:
a. 在“名称”字段输入运行 SQL Server 的计算机的完全限定域名。例如:
sql01.nwtraders
b. 在“预期目的”(或“需要的证书类型”)字段中,单击“服务器身份验证证书”。
c. 对于加密服务提供程序 (CSP),单击“Microsoft RSA 通道加密提供程序”。
注意:Microsoft 基本加密提供程序 1.0 版和 Microsoft 增强加密提供程序同样有效。Microsoft 强加密提供程序无效。
d. 选择“使用本地机器保存”复选框。
注意:不要选择“启用强私钥保护”。
8. 单击“提交”提交申请。
如果证书服务器自动颁发证书,现在就可以安装证书。否则,可以浏览到Microsoft 证书服务并选择“检查挂起的证书”,在CA 管理员颁发证书之后安装证书。
2. 验证证书是否已安装
此过程验证服务器证书是否已成功安装。
u 验证证书是否已安装
1. 单击任务栏上的“开始”按钮,然后单击“运行”。
2. 键入 mmc,然后单击“确定”。
3. 在“控制台”菜单上,单击“添加/删除管理单元”。
4. 单击“添加”。
5. 单击“证书”,然后单击“添加”。
6. 单击“计算机帐户”,然后单击“下一步”。
7. 确保选定了“本地计算机(运行这个控制台的计算机)”,然后单击“完成”。
8. 单击“关闭”,然后单击“确定”。
9. 在左窗格的树视图中,展开“证书(本地计算机)”,展开“个人”,然后选择“证书”。
10. 验证是否确实有一个证书具有您在前一个过程中指定的完全限定域名。
可以双击证书查看它的详细信息。
3. 在客户端安装颁发的 CA 证书
安装了证书并且 SQL Server 服务已经启动后,SQL Server 就可以与客户端协商 SSL。使用 SSL 连接到 SQL Server 的客户端必须:
● 安装了 MDAC 2.6 或 SQL Server 2000 连接库。
● 信任 SQL Server 的证书颁发者。
u 在客户端计算机上安装颁发 CA 的证书
1. 以管理员身份登录到客户端计算机。
2. 启动 Internet Explorer 并浏览到 Microsoft 证书服务,例如:
MyCA/certsrv
3. 单击“检索CA证书或证书吊销列表”,然后单击“下一步”。
4. 单击“安装此 CA 证书路径”,然后在确认对话框中单击“是”安装根证书。
4. 强制所有客户端使用 SSL
可以将服务器配置为强制所有客户端使用 SSL(如此过程所述),或者可以让客户端选择是否对每个连接都使用 SSL(如下一过程所述)。配置服务器强制客户端使用 SSL 的优点是:
● 保证了所有通信的安全。
● 拒绝任何不安全的连接。
缺点是:
● 所有客户端必须安装了 MDAC 2.6 或 SQL Server 2000 连接库;早期版本或通用库将无法连接。
● 不需要保护的连接由于额外的加密,性能开销会有所增加。
u 强制所有客户端使用 SSL
1. 在运行 SQL Server 的计算机上,单击“Microsoft SQL Server”程序组中的“服务器网络实用工具”。
2. 单击选择“强制协议加密”。
3. 验证是否启用了 TCP/IP 和/或命名管道。
其它协议不支持 SSL。
4. 单击“确定”关闭 SQL Server 网络实用工具,然后在“SQL Server 网络实用工具”消息框中单击“确定”。
5. 重新启动 SQL Server 服务。
所有后续客户端连接都会被要求使用 SSL,无论它们是否指定安全连接。
5. 允许客户端决定是否使用 SSL
此过程说明如何配置 SSL 以允许客户端选择是否使用 SSL。可以将客户端库配置为在所有连接上增强使用 SSL,或者可以让各应用程序在每个连接的基础上进行选择。配置客户端的优点是:
● 只有确实需要 SSL 的连接才会产生 SSL 系统开销。
● 不支持在 SQL Server 中使用 SSL 的客户端仍然可以连接。
如果采用此方法,应确定您愿意允许不安全的连接进入。
u 重新配置服务器
1. 在运行 SQL Server 的计算机上,运行“服务器网络实用工具”。
2. 清除“强制协议加密”复选框。
如何安装sql server 20003. 重新启动 SQL Server 服务。
4. 返回到客户端计算机。
u 对所有客户端连接使用 SSL
在此方法中,您将客户端库配置为对所有连接都使用 SSL。这意味着不能访问不支持加密的 SQL Server 和 SQL Server 2000 之前的SQL Server 版本。
1. 在“Microsoft SQL Server”程序组中,单击“客户端网络实用工具”。
2. 确保启用了 TCP/IP 和/或命名管道。
3. 选择“强制协议加密”。
u 允许应用程序选择是否使用加密
在此方法中,应用程序使用连接字符串来决定是否使用加密。这允许每个应用程序仅在需要时才使用加密。
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"
6. 验证通信是否已加密
此过程中,您将使用网络监视器来验证应用程序服务器和数据库服务器之间传送的数据是否已加密。您首先以明文形式发送数据,然后通过先配置服务器、再配置客户端来启用加密。
u 验证通信是否已加密
1. 在客户端计算机上,使用 Visual Studio.NET 创建一个名为 SQLSecureClient 的新 C# 控制台应用程序。
2. 将下面的代码复制到 class1.cs,替换所有现有的代码。
注意:用数据库服务器的名称替换连接字符串中的服务器名。
using System;
using System.Data;
using System.Data.SqlClient;
namespace SQLSecureClient
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论