如何设置客户端证书
更新日期: 2004年04月20日
本页内容
目标
本章的目标是:
• | 获取并安装客户端证书。 |
• | 创建一个需要客户端证书的 ASP.NET Web 应用程序。 |
适用范围
本章适用于以下产品和技术:
• | Microsoft® Windows® XP 或 Windows 2000 Server (Service Pack 3) 以及更高版本的操作系统 |
• | Microsoft Internet 信息服务 (IIS) 5.0 |
• | Microsoft 证书服务(如果您需要生成自己的证书) |
• | Microsoft .NET Framework 版本 1.0 (Service Pack 2) 以及更高版本 |
• | Microsoft Visual C#® .NET |
如何使用本章内容
若要学好本章内容:
• | 您必须具有使用 Visual C# .NET 和 Microsoft Visual Studio® .NET 的经验。 |
• | 您必须具有使用 ASP.NET 开发 Web 应用程序的经验。 |
• | 您必须有配置 IIS 的经验。 |
• | 如果您想生成新的客户端证书,则必须能够访问某个证书颁发机构 (CA),如 Microsoft 证书服务。 |
• | 如果您不希望生成自己的证书,则必须决定将从哪个商业证书颁发机构申请客户端证书。某些证书颁发机构 (CA) 会就此服务收费。 |
• | 您必须具有一台安装了 SSL 证书的 Web 服务器。有关详细信息,请参见如何在 Web 服务器上设置 SSL。 |
• | 要了解客户端证书与其他身份验证形式之间的相同与差异之处,请参见第 2 章 ASP.NET 应用程序的安全模型。 |
摘要
客 户端证书为 Web 应用程序提供了一种非常好的身份验证机制。浏览器或其他客户端应用程序必须先提供有效的身份验证,然后才能获得应用程序访问权限,这使得客户端不必提供用 户名和密码。因此,在创建供其他客户端应用程序访问的安全 Web 服务时,客户端的证书就显得特别有用。
本章详细介绍如何获取和安装客户端证书,并演示了如何创建需要客户端证书的 Web 应用程序。
创建一个简单的 Web 应用程序
在此过程中,您将创建一个供测试用的简单 Web 应用程序。
• | 创建一个简单的 Web 应用程序
1. | 启动 Visual Studio .NET 并创建一个新的名为 SecureApp 的 Visual C# ASP.NET Web 应用程序。 | 2. | 从工具箱中将一个标签控件拖放到 WebForm1.aspx Web 窗体上,然后将其 ID 属性设置为 message 。 | 3. | 再拖放一个标签至 WebForm1.aspx 窗体上,然后将其 ID 属性设置为 certData 。 | 4. | 将下面的代码添加到 Page_Load 事件过程中。 string username;
username = User.Identity.Name;
message.Text = "Welcome " + username;
HttpClientCertificate cert = Request.ClientCertificate;
if (cert.IsPresent)
{
certData.Text = "检索到客户端证书";
}
else
{
certData.Text = "无客户端证书";
}
| 5. | 在“生成”菜单上,单击“生成解决方案”。 | 6. | 启动 Internet Explorer 并导航至 http://localhost/SecureApp/WebForm1.aspx。 页面应该显示“欢迎”消息(不显示用户名,因为用户尚未经过身份验证)和“没有客户端证书”。 | 7. | 关闭 Internet Explorer。 | |
将 Web 应用程序配置为需要客户端证书
此过程使用 Internet 信息服务 (IIS) 将 Web 应用程序的虚拟目录配置为需要证书。
本过程假设您在 Web 服务器上安装了有效的证书。有关安装 Web 服务器证书的详细信息,请参见如何在 Web 服务器上设置 SSL。
• | 将 Web 应用程序的虚拟目录配置为需要证书
1. | 在 Web 服务主机上启动 IIS。 | 2. | 导航到 SecureApp 虚拟目录。 | 3. | 右键单击 SecureApp ,然后单击“属性”。 | 4. | 单击“目录安全性”选项卡。 | 5. | 单击“安全通信”下的“编辑”。 如果无法使用“编辑”,则可能没有安装 Web 服务器证书。 | 6. | 选择“要求安全通道 (SSL)”复选框。 | 7. | 选择“需要客户端证书”选项。 | 8. | 单击“确定”,然后再单击“确定”。 | 9. | 在“继承覆盖”对话框中,单击“全选”,然后单击“确定”关闭“SecureApp 属性”对话框。 这会将新的安全设置应用于虚拟根目录下的所有子目录。 | 10. | 要确认 Web 站点已正确配置,启动 Internet Explorer 并(使用 HTTPS)浏览到 https://localhost/secureapp/webform1.aspx。 | 11. | Internet Explorer 显示“客户身份验证”对话框,要求您选择一个客户端证书。因为您尚未安装客户端证书,所以单击“确定”,确认显示通知您页面需要客户端证书的错误页面。 | 12. | 关闭 Internet Explorer。 | |
申请并安装客户端证书
此过程安装客户端证书。您可以使用由任何证书颁发机构颁发的证书,也可按照后面几节所述使用 Microsoft 证书服务来生成自己的证书。
此过程假设 Microsoft 证书服务是为挂起的申请配置的,这要求管理员专门颁发证书。它也可以配置为应证书申请自动颁发证书。
• | 检查证书申请状态设置
1. | 在 Microsoft 证书服务计算机上,从“管理工具”程序组中选择“证书颁发机构”。 | 2. | 展开“证书颁发机构(本地)”,右键单击证书颁发机构并单击“属性”。 | 3. | 单击“策略模块”选项卡,然后单击“配置”。 | 4. | 检查默认操作。 以下过程假设选中了“将证书申请状态设成待定。管理员必须专门颁发证书”。 | |
• | 申请客户端证书
1. | 启动 Internet Explorer 并导航至 http://hostname /certsrv,其中 hostname 是安装 Microsoft 证书服务的计算机的名称。 | 2. | 单击“申请一个证书”,然后单击“下一步”。 | 3. | 在“选择申请类型”页上,单击“用户证书”,然后单击“下一步”。 | 4. | 单击“提交”完成申请。 | 5. | 关闭 Internet Explorer。 | |
• | 颁发客户端证书
1. | 从“管理工具”程序组中启动“证书颁发机构”工具。 | 2. | 展开您的证书颁发机构,然后选择“挂起的申请”文件夹。 | 3. | 选择刚提交的证书申请,指向“操作”菜单上的“所有任务”,然后单击“颁发”。 | 4. | 确认该证书显示在“颁发的证书”文件夹中,然后双击查看它。 | 5. | 在“详细信息”选项卡上,单击“复制到文件”将证书保存为 Base-64 编码的 X.509 证书。 | 6. | 关闭证书的属性窗口。 | 7. | 关闭证书颁发机构工具。 | |
• | 安装客户端证书
1. | 要查看证书,启动 Windows 资源管理器,导航至在前一过程中保存的 .cer 文件,然后双击它。 | 2. | 单击“安装证书”,然后在“证书导入向导”的首页单击“下一步”。 | 3. | 选择“根据证书类型,自动选择证书存储区”,然后单击“下一步”。 | 4. | 单击“完成”以完成该向导。关闭确认消息框,然后单击“确定”关闭证书。 | |
验证客户端证书操作
此过程验证您是否可以使用客户端证书访问 SecureApp 应用程序。
• | 验证客户端证书操作
1. | 启动 Internet Explorer 并导航至 https://localhost/secureapp/webform1.aspx。 | 2. | 确认 Web 页成功显示。 | |
其他资源
有关详细信息,请参见本指南中的如何在 Web 服务器上设置 SSL。