为了执行授权,Web 服务经常需要能够对它们的调用方(其它应用程序)进行身份验证。客户端证书为 Web 服务提供了一种非常好的身份验证机制。如果您使用客户端证书,您的应用程序也会得益于客户端应用程序和 Web 服务之间的安全通道创建(使用安全套接字层 [SSL])。这样您就可以安全地在 Web 服务之间传送保密信息。SSL 确保消息的完整性和机密性。
本“如何做”包括调用配置为需要客户端证书的 Web 服务的分步指导。
注意:本“如何做”中的信息也适用于由 IIS 承载的远程组件。
要求
以下各项介绍了推荐的硬件、软件、网络基础结构、技巧和知识以及您需要的服务包。
● 带 Service Pack 2 的 Microsoft? Windows? 2000 Server 操作系统
● Microsoft Visual Studio? .NET 开发系统
● 访问证书颁发机构 (CA) 以生成新的证书
● 一个已安装了服务器证书的 Web 服务器
有关安装 Web 服务器证书的更多信息,请参见本指南“参考”部分的“如何做:在 Web 服务器上设置 SSL”。
本“如何做”中的过程还要求您具有使用 Microsoft Visual C#? 开发工具进行 ASP.NET Web 开发的知识。
总结
本“如何做”包括如下过程:
1. 创建简单的 Web 应用程序
2. 将 Web 应用程序配置为需要客户端证书
3. 需要并安装客户端证书
4. 验证客户端证书操作
1. 创建简单的 Web 应用程序
u 创建简单的 Web 应用程序
1. 启动 Visual Studio .NET,创建一个名为 SecureApp 的新 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 = "Client certificate retrieved";
}
else
{
certData.Text = "No client certificate";
}
5. 在“构建”菜单中,单击“构建解决方案”
6. 启动 Internet Explorer 并导航至 http://localhost/SecureApp/WebForm1.aspx。
页面应该显示“欢迎”消息(不显示用户名,因为用户尚未经过身份验证)和“没有客户端证书”。
7. 关闭 Internet Explorer。
2. 将 Web 应用程序配置为需要客户端证书
此过程使用 Internet 信息服务 (IIS) 将 Web 应用程序的虚拟目录配置为需要证书。
此过程假设您在 Web 服务器上安装了有效的证书。有关安装 Web 服务器证书的详细信息,请参见“如何做:在 Web 服务器上设置 SSL”。
u 将 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 显示“客户身份验证”对话框,要求您选择一个客户端证书。因为您尚未安装客户端证书,所以单击“确定”,确认显示通知您页面需要客户端证书的错误页面。