操作方法: 保护 ASP.NET 应用程序使用客户端证书

文章翻译 文章翻译
文章编号: 315588 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

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


要求

下面的列表列出了推荐使用的硬件、 软件、 网络基础结构和所需的服务包:
  • Microsoft Windows 2000 Service Pack 2 的服务器
  • Microsoft Internet Explorer 6.0
  • Microsoft Visual Studio.NET
  • Microsoft 证书服务 (如果您必须生成您自己的证书)
本文假定您熟悉下列主题:
  • ASP.NET 开发与 Visual Basic 或 C#
  • Microsoft Internet Information Services (IIS) 配置

创建 ASP.NET Web 应用程序

在本节中,您将创建一个简单的 ASP.NET 应用程序。在后面的各节,您将使用客户端证书身份验证来保护此应用程序。
  1. 开始 Visual Studio.NET 中,并创建一个名为 SecureSite 的新的 ASP.NET Web 应用程序项目。
  2. 拖动 标签 控件从工具箱拖到 WebForm1.aspx Web 窗体,并将其 ID 属性设置为 greetingLabel.
  3. 拖动第二个 标签 控件拖到 WebForm1.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. 生成并保存该项目,然后关闭 Visual Studio。
  6. 开始 Internet Explorer,,然后浏览到以下页面:
    http://localhost/SecureSite/WebForm1.aspx
    请注意页将显示"欢迎"和"找不到证书"消息。请注意,因为用户未被验证页不显示用户名。
  7. 关闭 Internet Explorer。

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

在本节中,您将配置的 SecureSite 项目,以使用证书进行身份验证。若要使用客户端证书,您必须安装服务器端证书。您可以使用现有的服务器证书从任何证书颁发机构,也可以生成使用 Microsoft 证书服务的服务器端证书。


若要创建一个服务器端证书申请

  1. 在上 开始 菜单上指向 程序指向 管理工具然后单击 Internet 服务管理器.
  2. 展开您的服务器的节点,然后单击 默认的 Web 站点.
  3. 在上 操作 菜单上,单击 属性.
  4. 在上 目录安全性 选项卡上单击 服务器证书.请按照向导中的步骤操作:
    1. 单击 下一步 在向导的第一页。
    2. 在上 服务器证书 页面上单击 创建新的证书然后单击 下一步.
    3. 在上 延迟或立即请求 页面上单击 现在,准备请求,但稍后发送然后单击 下一步.
    4. 在上 名称和安全性设置 页上,接受默认设置,然后再单击 下一步.
    5. 在上 组织信息 页键入 MSDN 对于组织中,键入 文章如何 对于组织单位,然后单击 下一步.
    6. 在上 您的站点的公用名称 页键入 本地主机然后单击 下一步.
    7. 在上 地理信息 页上,键入您的国家/地区、 地区和城市的详细信息,然后再单击 下一步.
    8. 在上 证书请求文件的名称 页上,接受默认的文件名 (通常为 c:\certreq.txt),然后再单击 下一步.
    9. 在上 请求文件摘要 页面上,确认所有详细信息正确,然后单击 下一步.
    10. 单击 完成 若要关闭该向导。
  5. 打开生成时,该证书文件,然后将证书文件的全部内容复制到剪贴板。

若要提交一个请求,服务器端证书

  1. 开始 Internet Explorer,,然后浏览到以下页面:
    http://localhost/CertSrv
    注意: 必须安装 Microsoft 证书服务。
  2. 请按照向导中的步骤操作:
    1. 单击 申请证书然后单击 下一步.
    2. 在上 选择请求类型 页面上单击 高级的请求然后单击 下一步.
    3. 在上 高级的证书申请 页面上单击 提交证书申请使用 base64 编码的 pkcs # #10 文件然后单击 下一步.
    4. 在上 提交一个保存的申请 页面上,单击 Base64 编码的证书请求 (pkcs # #10 或 #7) 框中,然后按 CTRL + V 组合键来粘贴以前复制到剪贴板的证书申请。单击 提交.
  3. 关闭 Internet Explorer。

发布服务器端证书

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

安装服务器端证书

  1. 在上 开始 菜单上指向 程序指向 管理工具然后单击 Internet 服务管理器.
  2. 展开您的服务器的节点,然后单击 默认的 Web 站点.
  3. 在上 操作 菜单上,单击 属性.
  4. 在上 目录安全性 选项卡上单击 服务器证书.请按照向导中的步骤操作:
    1. 单击 下一步 在向导的第一页。
    2. 单击 处理挂起的请求 若要安装证书,然后单击 下一步.
    3. 浏览至您以前保存的 C:\Servercert.cer 证书文件。单击 下一步 两次,然后单击 完成.
  5. 单击 确定 若要关闭 属性 对话框。

SecureSite 网站配置 SSL 和客户端证书

  1. 在 Internet 服务管理器,选择 SecureSite 子站点,并查看其属性。
  2. 请按照向导中的步骤操作:
    1. 在上 目录安全性 选项卡上单击 编辑 在中 保护通信的安全 一节。
    2. 选择 要求安全通道 (SSL) 复选框。这样可确保对为此子站点的通信进行加密。
    3. 选择 要求客户端证书 复选框。这将确保该站点可以只查看具有安装客户端证书的用户。
    4. 选择 启用客户端证书映射 复选框。这用于将客户端证书映射到 Windows 用户帐户。
    5. 单击 编辑.请注意您可以将每个证书映射到单个 Windows 帐户,或者您可以将许多证书映射到相同的 Windows 帐户。
    6. 在上 多到一 选项卡上单击 添加 若要添加映射规则。此规则进行命名 映射规则然后单击 下一步.
    7. 单击 若要创建一个新规则,其中 O 子字段 (组织) 的证书的主题部分有条件"MSDN"。单击 确定 若要将映射应用到其证书中包含的"MSDN"组织属性的用户。在生产环境中,映射规则更严格,并通常验证者以及证书的颁发者。单击 下一步.
    8. 在上 映射 页面上选择 接受此证书用于登录身份验证.单击 浏览 若要选择要映射到 MSDN 用户的 Windows 帐户。对于本例,请使用管理员帐户。(在实际应用中,您创建一个专用的 Windows 帐户具有受限制权限。请确保您键入正确的密码。
    9. 单击 完成然后确认该密码。
  3. 单击 确定 若要关闭 帐户映射 对话框。
  4. 单击 确定 若要关闭 保护通信的安全 对话框。如果系统提示您将设置应用到子文件和文件夹,单击 全选然后单击 确定.
  5. 单击 确定 若要关闭 SecureSite 属性 对话框。

验证基于证书的身份验证

  1. 开始 Internet Explorer,,然后浏览到以下页面:
    https://localhost/SecureSite/WebForm1.aspx
    注意使用 https 安全协议。
  2. 确认您收到一条消息该网页要求客户端证书。
  3. 关闭 Internet Explorer。

安装客户端证书

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


请求客户端证书

  1. 开始 Internet Explorer,,然后浏览到以下页面:
    http://localhost/CertSrv
  2. 请按照向导中的步骤操作:
    1. 单击 申请证书然后单击 下一步.
    2. 在上 选择请求类型 页面上单击 Web 浏览器证书然后单击 下一步.
    3. 键入所需的信息。请确保您键入 MSDN 在中 公司 文本框。
    4. 单击 提交 若要完成该请求。
  3. 关闭 Internet Explorer。

以颁发客户端证书

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

若要安装客户端证书

  1. 打开 Windows 资源管理器,并双击要查看的证书文件的 Clientcert.cer。
  2. 按照证书导入向导中的下列步骤:
    1. 在向导的第一页,单击 安装证书然后单击 下一步.
    2. 选择 自动选择 $ 根据证书类型的证书存储区 复选框,然后单击 下一步.
    3. 单击 完成 若要完成该向导。
  3. 关闭确认消息框中,然后单击 确定 若要关闭该证书。

验证它正常工作

在本节中,您将验证证书中指定"MSDN"公司可以为客户端应用程序查看 SecureSite 网站。用户映射到映射规则中指定的帐户。
  1. 开始 Internet Explorer,,然后浏览到以下页面:
    https://localhost/SecureSite/WebForm1.aspx
  2. 确认:
    • 此时将显示 Web 页。
    • 使用适当的 Windows 帐户。
    • "MSDN"的组织是从证书中读取。

参考

有关如何使用安全套接字层 (SSL) 来保护 Web 站点的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
298805 如何: 为所有客户交互与您在 Internet Information Services 的 Web 站点启用 SSL

属性

文章编号: 315588 - 最后修改: 2013年1月27日 - 修订: 7.0
这篇文章中的信息适用于:
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft Internet Information Services 6.0
关键字:?
kbhowtomaster kbsecurity kbmt KB315588 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 315588
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com