使用客户端证书调用Web服务.doc
《使用客户端证书调用Web服务.doc》由会员分享,可在线阅读,更多相关《使用客户端证书调用Web服务.doc(12页珍藏版)》请在三一办公上搜索。
1、构建安全的 ASP.NET 应用程序身份验证、授权和安全通信有关构建安全的 ASP.NET 应用程序 的起点和完整概述,请参见登陆页面。总结Web 服务将客户端证书身份验证作为客户端应用程序身份验证的一种方式。本“如何做”介绍如何为客户端证书身份验证配置 Web 服务,以及如何调用 Web 服务以传递来自 ASP.NET Web 应用程序的证书。如何做:使用来自 ASP.NET 的客户端证书来调用 Web 服务为了执行授权,Web 服务经常需要能够对它们的调用方(其它应用程序)进行身份验证。客户端证书为 Web 服务提供了一种非常好的身份验证机制。如果您使用客户端证书,您的应用程序也会得益于客
2、户端应用程序和 Web 服务之间的安全通道创建(使用安全套接字层 SSL)。这样您就可以安全地在 Web 服务之间传送保密信息。SSL 确保消息的完整性和机密性。本“如何做”介绍如何调用配置为要求客户端证书的 Web 服务。注意:本“如何做”中的信息还适用于 ASP.NET 和 IIS 托管的远程组件。为什么使用服务组件?本“如何做”中介绍的解决方案使用被配置为在企业服务服务器应用程序中运行的服务组件(使用自定义的服务帐户)。ASP.NET Web 应用程序调用该服务组件,而服务组件将调用 Web 服务(传递客户端证书)。图 1 中显示了这一解决方案配置。Insert figure: How
3、To - Calling A Web Service with Certificates.gif图 1ASP.NET 调用服务组件以调用 Web 服务这种配置是为了确保系统在与 Web 服务通讯时能够访问用户配置文件。这是初始 SSL 握手所必需的。 注意:用于运行 Web 应用程序的 ASPNET 帐户具有“拒绝交互登录”权限,它禁止用户使用此帐户进行交互登录。因此,该帐户没有用户配置文件。 不要给 ASPNET 帐户(或任何用于运行 Web 应用程序的帐户)授予交互登录的权限。在配置运行 Web 应用程序的帐户时始终要遵循最少权限原则,并且给它们授予尽可能少的权限。有关的详细信息,请参见本
4、指南“参考”部分中的“如何做:创建自定义帐户以便运行 ASP.NET”。为什么需要用户配置文件?在请求要求客户端证书的 Web 服务时,在客户端和服务器之间就会进行 SSL 握手。交换的一些组件有服务器证书、客户端证书以及客户端生成的“预备主要机密”。以后可在协议中使用此机密来生成“主要机密”。 为使服务器确认证书提供者就是实际的私钥持有者,客户端必须使用私钥加密预备主要机密,并将加密的预备主要机密发送到服务器。为使系统能够访问客户端的私钥以签名预备主要机密,它必须访问客户端密钥存储中的私钥。密钥存储位于客户端的配置文件(必须加载)中。需求以下各项介绍了推荐的硬件、软件、网络基础结构、技巧和知
5、识以及您需要的服务包。Microsoft Windows 2000 操作系统Microsoft Visual Studio .NET 开发系统访问证书颁发机构 (CA) 以生成新的证书一个已安装了服务器证书的 Web 服务器有关安装 Web 服务器证书的详细信息,请参见“如何做:在 Web 服务器上设置 SSL”。 “如何做”中的过程还要求您具备 Microsoft Visual C# 开发工具的相关知识。总结“如何做”包括如下过程:1.创建一个简单的 Web 服务2.将 Web 服务虚拟目录配置为需要有客户端证书3.创建一个自定义帐户以运行服务组件4.为自定义帐户请求一个客户端证书5.使用浏
6、览器测试客户端证书6.将客户端证书导出到一个文件中7.开发用于调用该 Web 服务的服务组件8.配置和安装该服务组件9.开发一个 Web 应用程序以调用该服务组件 注意:在本“如何做”主题中,将 Web 服务计算机(它托管 Web 服务)命名为“WSServer”;而将 Web 服务客户端计算机(它托管客户端 ASP.NET Web 应用程序和服务组件)命名为“WSClient”。1. 创建一个简单的 Web 服务u在 Web 服务主机上创建一个简单的 Web 服务1.启动 Visual Studio .NET,创建一个新的名为 SecureMath 的 C# ASP.NET Web 服务应用
7、程序。2.将 service1.asmx 重命名为 math.asmx。3.打开 math.asmx.cs,并将 Service1 类重命名为 math。4.将下面的 Web 方法添加到 math 类。WebMethodpublic long Add(long operand1, long operand2)return (operand1 + operand2);4.在“构建”菜单上,单击“构建解决方案”以创建 Web 服务。 2. 将 Web 服务虚拟目录配置为需要有客户端证书此过程使用 Internet 信息服务为 SSL 配置 Web 服务的虚拟目录并且要求使用证书。本过程假设您在 W
8、eb 服务器上安装了有效的证书。有关安装 Web 服务器证书的详细信息,请参见本指南“参考”部分中的“如何做:在 Web 服务器上设置 SSL”。u将 Web 服务虚拟目录配置为需要有客户端证书1.在 Web 服务主机上启动 Internet 信息服务。2.导航到 SecureMath 虚拟目录。3.右击 SecureMath,然后单击“属性”。4.单击“目录安全性”选项卡。5.单击“安全通信”下的“编辑”。如果无法使用“编辑”,则很可能是由于没有安装 Web 服务器证书。6.选择“要求安全通道 (SSL)”复选框。7.选择“要求客户端证书”选项。8.单击“确定”,然后再单击“确定”。9.在“
9、继承覆盖”对话框中,单击“全选”,然后单击“确定”以关闭 SecureMath 属性对话框。这会将新的安全设置应用于虚拟根目录下的所有子目录。 3. 创建一个自定义帐户以运行服务组件此过程在 Web 服务客户端计算机上创建一个新的用户帐户,可用来运行调用 Web 服务的服务组件。 u创建一个自定义帐户以运行服务组件1.在客户端计算机上创建一个具有强密码的新用户帐户。清除“用户下次登录时须更改密码”复选框,然后选择“密码永不过期”选项。2.将该帐户添加到 Administrators 组中。用于加载用户配置文件的帐户必须是本地计算机的管理员。 4. 为自定义帐户请求一个客户端证书在此过程中,您将
10、使用新的自定义帐户登录到客户端计算机。然后提出证书请求。此过程假定您使用的是 Microsoft 证书服务。如果您没有使用 Microsoft 证书服务来创建新的证书,请在使用自定义帐户登录的同时,向您的首选 CA 提出客户端证书请求并安装该证书。此过程还假定将 Microsoft 证书服务配置为针对证书请求自动颁发证书。还可以将它配置为将请求置为未决状态(它要求管理员显式颁发证书)。 u检查 Microsoft 证书服务设置1.在 Microsoft 证书服务计算机上,在“管理工具”程序组中单击“证书颁发机构”。2.展开“证书颁发机构(本地)”,右键单击该证书颁发机构,然后单击“属性”。3.
11、单击“策略模块”选项卡,然后单击“配置”。4.检查默认操作。 以下过程假定选定了“始终颁发证书”。 u为自定义帐户请求一个客户端证书1.注销客户端计算机并使用自定义帐户重新登录。这将强制为自定义帐户创建一个用户配置文件。2.浏览到该 CA 以请求客户端证书。例如,如果 CA 位于 CAServer 计算机上,请浏览到以下位置。http:/caserver/certsrv3.单击“请求证书”,然后单击“下一步”。4.确保选中了“用户证书”,然后单击“下一步”。5.单击“提交”。 此时,将生成一个请求并将它发送到 CA 以进行处理。6.在颁发了证书并收到来自 CA 服务器的响应后,单击“安装此证书
12、”。7.确保将颁发 CA 的证书作为可信根证书安装到本地计算机上。 要确认这一情况,可执行以下步骤:a.单击任务栏上的“开始”按钮,然后单击“运行”。b.键入“mmc”,然后单击“确定”。c.在“文件”菜单上,单击“添加/删除管理单元”。d.单击“添加”。e.单击“证书”,然后单击“添加”。f.单击“计算机帐户”,然后单击“下一步”。g.单击“本地计算机:(运行本控制台的计算机)”,然后单击“完成”。h.单击“关闭”,然后单击“确定”。i在 MMC 管理单元的左侧窗格中,展开“证书(本地计算机)”。j.展开“受信任的根证书颁发机构”,然后单击“证书”。k.确认您的 CA 的证书已列出。 如果该
13、 CA 的证书没有列出,请执行以下步骤:a.浏览到 http:/caserver/certsrv。b.单击“检索CA证书或证书吊销列表”,然后单击“下一步”。c.单击“安装此 CA 证书路径”。 5. 使用浏览器测试客户端证书在此过程中,您将浏览到 Web 服务以确认服务器或客户端证书没有问题。u使用浏览器测试客户端证书1.使用 Internet Explorer 并浏览到 https:/server/SecureMath/Math.asmx。确保您指定了“https”,因为已将站点配置为要求使用 SSL。2.此时应出现“客户身份验证”对话框。选择您的客户端证书,然后单击“确定”。3.确认在您
14、的浏览器中成功显示 Web 服务测试页。 如果看到如图 1 所示的对话框,您需要将证书颁发机构的证书安装到“受信任的根证书颁发机构”存储中(正如上一过程中所述)。.Insert figure: How To Certificate Alert Dialog.gif图 1“安全警报”对话框 6. 将客户端证书导出到一个文件中此过程将客户端证书导出到文件中。随后,当服务组件需要将该证书传递到 Web 服务时,它就会检索该证书。u将客户端证书导出到文件中1.在 Internet Explorer 中,单击“工具”菜单上的“Internet 选项”。2.单击“内容”选项卡。3.单击“证书”。4.单击该
15、客户端证书,然后单击“导出”。5.单击“下一步”,跳过证书导出向导的初始对话框。6.确认选中了“不,不要导出私钥”,然后单击“下一步”。7.确保选中了“DER 编码二进制 X.509 (.CER)”,然后单击“下一步”。您必须使用此格式,因为 .NET 框架不支持 Base-64 或 PKCS #7 格式。8.输入一个导出文件名称。请注意 .cer 导出文件的位置,因为在随后的过程中还会需要此位置。 9.单击“下一步”,然后单击“完成”以导出证书。10.关闭 Internet Explorer。11.注销计算机并使用一般开发帐户重新登录。 7. 开发用于调用该 Web 服务的服务组件此过程创建
16、一个新的 C# 类库应用程序,并创建用于调用 Web 服务的服务组件。此过程假定您当前在使用客户端计算机。u开发用于调用该 Web 服务的服务组件1.启动 Visual Studio.NET,并创建一个名为 WebServiceRequestor 的新 C# 类库项目。3.添加对 SecureMath Web 服务的 Web 引用。要点:在添加 Web 引用之前,必须暂时将 Web 服务的虚拟目录重新配置为不要求客户端证书(但仍要求使用 SSL)。在成功添加 Web 引用后,将虚拟目录配置改回到要求客户端证书。实际上,如果站点要求客户端证书,则服务的发布者将 WSDL 作为单独的脱机文件(服务
17、的使用者可用它来创建代理)提供。在“添加 Web 引用”对话框中,确保在指定 Web 服务位置时指定“https”。如果不这样做,就会出现错误,因为已将 Web 服务虚拟目录配置为要求使用 SSL。 4.添加一个对 System.EnterpriseServices 程序集的引用。5.将 class1.cs 重命名为 ProfileManager.cs。6.将以下类定义添加到 ProfileManager.cs 中(替换主干 class1 类)。ProfileManager 类使用 P/Invoke 调用 LoadUserProfile 和 UnloadUserProfile Win32 AP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 客户端 证书 调用 Web 服务
链接地址:https://www.31ppt.com/p-5519944.html