|
|
Posted on 2007-06-12 21:06 玄铁剑 阅读(607) 评论(0) 编辑 收藏 引用 所属分类: ASP.NET相关
保护 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 "。 |
|
|