玄铁剑

成功的途径:抄,创造,研究,发明...
posts - 128, comments - 42, trackbacks - 0, articles - 174

 保护 ASP.NET 应用程序使用客户端证书

注意:这篇文章是由无人工介入的自动的机器翻译系统翻译完成。这些文章是微软为不懂英语的用户提供的, 以使他们能够理解这些文章的内容。微软不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的使用所引起的任何直接的, 或间接的可能的问题负责。
文章编号 : 315588
最后修改 : 2005年7月8日
修订 : 4.1

概要

对于高度安全 Web 应用程序, 如 Internet 银行站点, 可能需要实现对用户身份验证更安全解决方案比用户名和密码组合。 可以使用客户端数字证书来验证对用户身份 此外, 可以客户端数字证书映射到 Windows 帐户必要在服务器上。


回到顶端

要求

以下列表概括了推荐硬件、 软件、 网络结构, 以及 ServicePack, 您需要:
Microsoft Windows 2000 服务 pack 2 服务器
Microsoft Internet Explorer 6.0
MicrosoftVisualStudio.NET
Microsoft 证书服务 (如果必须生成自己的证书)
本文假定您已熟悉以下主题:
使用 VisualBasic 或 VisualC # ASP.NET 开发
MicrosoftInternet 信息服务 (IIS) 配置

回到顶端

创建 ASP.NETWeb 应用程序

本节, 中创建简单的 ASP.NET 应用程序。 要遵循, 节中您将使用客户端证书身份验证来保护应用程序。
1. 启动 VisualStudio.NET, 然后创建新 ASP.NETWeb 应用程序项目命名 SecureSite。
2. 将 Label 控件从工具箱拖到 WebForm 1 .aspx Web 窗体, 并将其 ID 属性设置为 greetingLabel 。
3. 将二 Label 控件拖到 WebForm 1 .aspx, 并将其 ID 属性设置为 certDataLabel 。
4. 将以下代码添加到 Page _ Load 事件过程:
'Visual Basic
            Dim username As String
            userName = User.Identity.Name
            greetingLabel.Text = "Welcome " & userName
            Dim cert As HttpClientCertificate = Request.ClientCertificate
            If cert.IsPresent Then
            'Get the Organization (O) field from the Subject section.
            certDataLabel.Text = cert.Get("Subject O")
            Else
            certDataLabel.Text = "No certificate was found."
            End If
            
//Visual C#
            string userName;
            userName = User.Identity.Name;
            greetingLabel.Text = "Welcome " + userName;
            HttpClientCertificate cert = Request.ClientCertificate;
            if (cert.IsPresent)
            certDataLabel.Text = cert.Get("SUBJECT O");
            else
            certDataLabel.Text="No certificate was found.";
            
5. 生成并保存项目, 并关闭 VisualStudio。
6. 启动 InternetExplorer, 然后浏览到以下页面:
http://localhost/SecureSite/WebForm1.aspx
注意, 页显示 " 欢迎 " 并 " 找到无证书 " 消息。 注意, 页不显示用户名称由于有不被验证用户。
7. 关闭 InternetExplorer。

回到顶端

为基于证书的验证配置 Web 服务器

在本节, 配置 SecureSite 项目以使用证书进行验证。 要使用客户端证书, 必须安装服务器端证书。 可使用现有服务器证书从任何证书机构, 或您可以生成带有 Microsoft 证书服务服务器端证书。


要创建服务器端证书申请

1. On the Start menu, point to Programs, point to Administrative Tools, and then click Internet Services Manager.
2. 展开节点用于服务器, 然后单击 默认 Web 站点 。
3. 在 操作 菜单上, 单击 属性 。
4. 在 " 目录安全性 选项卡, 单击 服务器证书 。 按照向导中这些步骤:
a. 在向导的第一页上单击 下一步 。
b. 服务器证书 上, 创建新证书 , 依次 下一步 。
c. On the Delayed or Immediate Request page, click Prepare the request now, but send it later, and then click Next.
d. 在 名称和安全设置 " 页上, 接受默认设置, 然后单击 下一步 。
e. 在 组织信息 页面, 对组织, 键入 MSDN 对于单位, 键入 如何到项目 , 然后单击 下一步 。
f. 您站点的公用名称 上, 键入 localhost , 然后单击 下一步 。
g. On the Geographical Information page, type your country, region, and city details, and then click Next.
h. 证书请求文件名称 上, 接受 (通常 c:\certreq.txt), 默认文件名, 然后单击 下一步 。
i. 在 " 请求文件摘要 页上, 确认, 所有详细信息是否正确, 然后单击 下一步 。
j. 单击 完成 以关闭向导。
5. 打开生成, 证书文件, 然后将证书文件的整个内容复制到剪贴板。

以提交服务器端证书请求

1. 启动 InternetExplorer, 然后浏览到以下页面:
http://localhost/CertSrv
注意 :: Microsoft 证书服务必须安装。
2. 按照向导中这些步骤:
a. 申请证书 , 依次 下一步 。
b. 选择申请类型 上, 高级申请 , 依次 下一步 。
c. 在 高级证书申请 页, 单击 提交证书申请使用 base 64 编码 PKCS#10 文件 , 并单击 下一步 。
d. On the Submit a Saved Request page, click in the Base64 Encoded Certificate Request (PKCS #10 or #7) box, and then press the CTRL+V key combination to paste the certificate request that you copied to the clipboard earlier. 单击 提交 。
3. 关闭 InternetExplorer。

要颁发服务器端证书

1. 在 开始 菜单, 指向 程序 , 指向 管理工具 , 然后单击 证书机构 。
2. 展开节点有关证书颁发机构, 然后选择 挂起请求 。
3. 选择, 您只提交证书申请。 在 操作 菜单, 指向 所有任务 , 然后单击 问题 。
4. 确认证书颁发证书 " 文件夹, 中显示, 然后双击要查看该证书。
5. 在 详细资料 选项卡, 单击 复制到文件 。 如 Base-64 编码 X 509 证书来 C:\Servercert.cer 保存证书。
6. 关闭 属性 对话框为证书。
7. 关闭证书机构工具。

要安装服务器端证书

1. On the Start menu, point to Programs, point to Administrative Tools, and then click Internet Services Manager.
2. 展开节点用于服务器, 然后单击 默认 Web 站点 。
3. 在 操作 菜单上, 单击 属性 。
4. 在 " 目录安全性 选项卡, 单击 服务器证书 。 按照向导中这些步骤:
a. 在向导的第一页上单击 下一步 。
b. 下一步 依次来安装证书, 进程挂起请求 。
c. 浏览到 C:\Servercert.cer 证书文件, 保存以前。 两次, 单击 下一步 然后单击 完成 。
5. 单击 确定 以关闭 属性 对话框。

要为 SSL 和客户端证书配置 SecureSite 站点

1. 在 InternetServicesManager, 选择子 SecureSite 站点, 并查看其属性。
2. 按照向导中这些步骤:
a. 在 " 目录安全性 选项卡, 单击 编辑 安全通信 部分中。
b. 选中 要求安全通道 (SSL) 复选框。 这确保了是加密通信到此站点。
c. 选中 需要客户证书 复选框。 这可以确保, 站点只能由用户谁有客户端证书安装查看。
d. 选中 " 启用客户证书映射 复选框。 使用将客户证书映射到 Windows 用户帐户。
e. 单击 A0 > " 编辑 " 。 注意, 您可映射到单个 Windows 帐户, 每个证书或可许多证书映射到同一 Windows 帐户。
f. 在 多 1 对 选项卡, 单击 添加 以添加映射规则。 名称 映射规则 , 此规则, 然后单击 下一步 。
g. 单击 新建 要创建新规则中 O 子域 (组织) 是证书的主题部分具有 " MSDN " 条件。 单击 确定 以映射应用到其证书包含组织属性对 " MSDN " 用户。 在生产环境, 映射规则严格, 通常验证颁发者是证书以及主题。 请单击 下一步 。
h. 在 映射 页, 选择 接受该证书用于身份验证登录 。 单击 浏览 以选择与要映射到 MSDN 用户 Windows 帐户。 对于本例, 使用管理员帐户。 具有受限权限 (实际应用程序, 中您创建专用 Windows 帐户)。 确保您键入正确的密码。
i. 单击 完成 , 并确认密码。
3. 单击 确定 以关闭 帐户映射 对话框。
4. 单击 确定 以关闭 " 安全通信 " 对话框中。 If you are prompted to apply the settings to child files and folders, click Select All, and then click OK.
5. 单击 确定 以关闭 SecureSite 属性 对话框。

要验证基于证书的验证

1. 启动 InternetExplorer, 然后浏览到以下页面:
https://localhost/SecureSite/WebForm1.aspx
注意使用安全协议, https。
2. 确认您收到邮件页需要客户证书。
3. 关闭 InternetExplorer。

回到顶端

安装客户证书

本节, 中您安装客户端证书。 使用来自任何证书机构, 证书也可使用 Microsoft 证书服务以生成自己的证书。


要申请客户端证书

1. 启动 InternetExplorer, 然后浏览到以下页面:
http://localhost/CertSrv
2. 按照向导中这些步骤:
a. 申请证书 , 依次 下一步 。
b. 在 " 选择申请类型 页, 单击 Web 浏览器证书 , 并单击 下一步 。
c. 键入所需信息。 确保 公司 文本框中, 您键入 MSDN 。
d. 单击以完成请求 提交 。
3. 关闭 InternetExplorer。

要颁发客户端证书

1. 从 管理工具 程序组启动证书机构工具。
2. 展开节点有关证书颁发机构, 然后选择 挂起请求 。
3. 选择, 您只提交证书申请。 在 操作 菜单, 指向 所有任务 , 然后单击 问题 。
4. 确认证书颁发证书 " 文件夹, 中显示, 然后双击要查看该证书。
5. 在 详细资料 选项卡, 单击 复制到文件 。 如 Base-64 编码 X 509 证书来 C:\Clientcert.cer 保存证书。
6. 关闭 属性 对话框为证书。
7. 关闭证书机构工具。

要安装客户端证书

1. 打开 WindowsExplorer, 并双击要查看证书文件 Clientcert.cer。
2. 按照证书导入向导中这些步骤:
a. 向导, 的第一页上 安装证书 , 依次 下一步 。
b. 选中复选框, 自动选择证书存储基于证书的类型 , 然后单击 下一步 。
c. 单击 完成 以完成向导。
3. 取消确认消息框, 然后单击 确定 以关闭证书。

回到顶端

验证它工作

本节, 中验证客户应用程序与证书作为公司可指定 " MSDN " 查看 SecureSite 站点。 用户映射到该映射规则中指定帐户。
1. 启动 InternetExplorer, 然后浏览到以下页面:
https://localhost/SecureSite/WebForm1.aspx
2. 确认:
出现 Web 页。
是使用适当的 Windows 帐户。
从证书读取组织 " MSDN "。
只有注册用户登录后才能发表评论。