Posted on 2008-12-09 21:27
玄铁剑 阅读(432)
评论(0) 编辑 收藏 引用 所属分类:
ASP.NET相关
Microsoft Corporation
目标
本模块用于:
适用于
本模块适用于下列产品和技术:
-
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 来申请客户端证书。某些 CA 将对此服务收费。
-
必须有一个安装了 SSL 证书的 Web 服务器。有关详细信息,请阅读“如何在 Web 服务器上建立 SSL”。
-
有关客户端证书与其他形式的身份验证的比较,请阅读模块“Security Model for ASP.NET Applications”。
本页内容
摘要
创建一个简单的 Web 应用程序
将 Web 应用程序配置为需要客户端证书
申请并安装客户端证书
验证客户端证书操作
其他资源
摘要
客户端证书为 Web 应用程序提供了一种出色的身份验证机制。浏览器或其他客户端应用程序必须提供有效的证书才能被授予对应用程序的访问权,从而使客户端无需再提供用户名和密码。这就使得在创建由其他客户端应用程序访问的安全的 Web 服务时,客户端证书非常有用。
本模块描述如何获取和安装客户端证书,并说明如何创建需要客户端证书的 Web 应用程序。
创建一个简单的 Web 应用程序
在此过程中,您将创建一个简单的用于测试目的的 Web 应用程序。
要创建一个简单的 Web 应用程序,请执行下列操作:
-
启动 Visual Studio .NET 并创建一个新的名为 SecureApp 的 Visual C# ASP.NET Web 应用程序。
-
将标签控件从工具箱拖到 WebForm1.aspx Web 窗体,然后将其 ID 属性设置为 message。
-
再将一个标签拖到 WebForm1.aspx,并将其 ID 属性设置为 certData。
-
将下列代码添加到 Page_Load 事件过程中。
string username;
username = User.Identity.Name;
message.Text = "Welcome " + username;
HttpClientCertificate cert = Request.ClientCertificate;
if (cert.IsPresent)
{
certData.Text = "Client certificate retrieved";
}
else
{
certData.Text = "No client certificate";
}
-
在 Build 菜单上,单击 Build Solution。
-
启动 Internet Explorer 并导航到 http://localhost/SecureApp/WebForm1.aspx。
应显示带有消息“Welcome”(不显示用户名,因为用户尚未进行身份验证)和“No client certificate”的页。
-
关闭 Internet Explorer。
将 Web 应用程序配置为需要客户端证书
此过程使用 Internet 信息服务 (IIS) 将 Web 应用程序的虚拟目录配置为需要证书。
此过程假定您在 Web 服务器上安装了有效的证书。有关安装 Web 服务器证书的详细信息,请参阅“如何在 Web 服务器上建立 SSL”。
要将 Web 应用程序的虚拟目录配置为需要证书,请执行下列操作:
-
在 Web 服务主机上,启动 IIS。
-
导航到 SecureApp 虚拟目录。
-
右击 SecureApp,然后单击 Properties。
-
单击 Directory Security 选项卡。
-
在 Secure communications 下,单击 Edit。
如果 Edit 不可用,最可能的原因是未安装 Web 服务器证书。
-
选择 Require secure channel (SSL) 复选框。
-
选择 Require client certificates 选项。
-
单击 OK,然后再次单击 OK。
-
在 Inheritance Overrides 对话框中,单击 Select All,然后单击 OK 关闭 SecureApp 属性对话框。
此操作将新安全性设置应用到虚拟目录根下的所有子目录。
-
要确认已正确配置了 Web 站点,请启动 Internet Explorer 并浏览(使用 HTTPS)到 https://localhost/SecureApp/webform1.aspx。
-
Internet Explorer 显示出一个 Client Authentication 对话框,要求您选择一个客户端证书。由于您尚未安装客户端证书,因此请单击 OK,并确认显示出一个通知您此页需要客户端证书的错误页。
-
关闭 Internet Explorer。
申请并安装客户端证书
此过程将安装客户端证书。您可以使用任何证书颁发机构的证书,也可以使用 Microsoft 证书服务生成自己的证书,如以下几部分所述。
此过程假定 Microsoft 证书服务已针对挂起申请进行了配置,它需要管理员显式颁发证书。它还可以配置为自动颁发证书来响应证书申请。
要检查证书申请状态设置,请执行下列操作:
-
在 Microsoft 证书服务计算机上,从 Administrative Tools 程序组中选择 Certification Authority。
-
展开 Certification Authority (Local),右击证书颁发机构并单击 Properties。
-
单击 Policy Module 选项卡,然后单击 Configure。
-
检查默认操作。
下面的过程假定已选中 Set the certificate request status to pending. Administrator must explicitly issue the certificate。
要申请客户端证书,请执行下列操作:
-
启动 Internet Explorer 并导航到 http:// hostname/certsrv,其中 hostname 是安装 Microsoft 证书服务的计算机的名称。
-
单击 Request a certificate,然后单击 Next。
-
在 Choose Request Type 页上,单击 User Certificate,然后单击 Next。
-
单击 Submit 来完成申请。
-
关闭 Internet Explorer。
要颁发客户端证书,请执行下列操作:
-
从 Administrative Tools 程序组中,启动 Certification Authority 工具。
-
展开证书颁发机构,然后选择 Pending Requests 文件夹。
-
选择刚提交的证书申请,指向 Action 菜单上的 All Tasks,然后单击 Issue。
-
确认证书在 Issued Certificates 文件夹中显示出来,然后双击它以查看其内容。
-
在 Details 选项卡上,单击 Copy to File 将此证书保存为 Base-64 编码的 X.509 证书。
-
关闭此证书的属性窗口。
-
关闭“证书颁发机构”工具。
要安装客户端证书,请执行下列操作:
-
要查看证书,请启动 Windows Explorer,导航到上一过程中保存的 .cer 文件,然后双击此文件。
-
单击 Install Certificate,然后单击 Certificate Import Wizard 的第一页上的 Next。
-
选择 Automatically select the certificate store based on the type of certificate,然后单击 Next。
-
单击 Finish 完成此向导。取消确认消息框,然后单击 OK 关闭证书。
验证客户端证书操作
本过程验证您是否可以使用客户端证书来访问 SecureApp 应用程序。
要验证客户端证书操作,请执行下列操作: