经典技术文章转载:如何利用 SSL 调用 Web 服务

来源:互联网 发布:手机怎样恢复不了数据 编辑:程序博客网 时间:2024/05/16 10:01
Posted on 2010-02-06 21:00 Frank Xu Lei 阅读(17) 评论(0)  编辑 收藏 网摘 所属分类: 经典技术文章转载
如何利用 SSL 调用 Web 服务
发布日期 : 10/25/2004 | 更新日期 : 10/25/2004

浏览全部“安全性指南”主题

Microsoft Corporation

目标

本模块用于:

  • 将一个 ASP.NET Web 服务配置为要求对所有客户端通信使用 SSL。

  • 配置客户端计算机以信任为 Web 服务器颁发 SSL 证书的证书颁发机构 (CA)。

  • 使用 HTTPS 安全地调用 ASP.NET Web 服务。

适用于:

本模块适用于下列产品和技术:

  • Microsoft® Windows® XP 或 Windows 2000 Server(带 Service Pack 3)以及更高版本的操作系统

  • Microsoft Internet 信息服务 (IIS) 5.0

  • Microsoft .NET Framework 版本 1.0(带 Service Pack 2)以及更高版本

  • Microsoft Visual C#® .NET 开发工具

本模块的使用方法

要最大程度的利用本模块:

  • 必须有使用 Visual C# .NET 和 Microsoft Visual Studio® .NET 开发系统的经验。

  • 必须有使用 ASP.NET 开发 Web 应用程序的经验。

  • 必须有配置 IIS 的经验。

  • 阅读模块“Secure Communication”。本模块介绍了 SSL 并描述了最常用到它的一些情况。

  • 必须有一个安装了 SSL 证书的 Web 服务器。有关详细信息,请阅读“How To Set Up SSL on a Web Server”。

  • 您的客户端计算机必须已经信任为您的服务器颁发 SSL 证书的 CA,或您必须有对 CA 证书的访问权,以便可以使用本模块中描述的过程来信任它。

本页内容

摘要 摘要
创建一个简单的 Web 服务 创建一个简单的 Web 服务
将 Web 服务虚拟目录配置为需要 SSL 将 Web 服务虚拟目录配置为需要 SSL
使用浏览器测试 Web 服务 使用浏览器测试 Web 服务
在客户端计算机上安装证书颁发机构的证书 在客户端计算机上安装证书颁发机构的证书
开发一个 Web 应用程序来调用 Web 服务 开发一个 Web 应用程序来调用 Web 服务
其他资源 其他资源

摘要

Web 服务及其客户端应用程序之间的通信经常带有安全性敏感信息,而这些信息可受益于安全套接字层 (SSL) 协议提供的数据完整性和保密性。

本模块描述了如何配置 ASP.NET Web 服务来要求客户端对所有通信使用 SSL,并说明了如何使用 HTTPS 协议从 ASP.NET 客户端应用程序调用 Web 服务。

本方法文档中的信息还适用于 ASP.NET 和 Microsoft Internet 信息服务 (IIS) 所宿主的远程对象(使用 .NET 远程技术)。有关如何创建 IIS 所宿主的远程组件,请参阅“How To Create a Remote Component Hosted by IIS”。

返回页首

创建一个简单的 Web 服务

在此过程中,您将创建一个简单的用于测试目的的 Web 服务。

要在 Web 服务宿主计算机上创建一个简单的 Web 服务,请执行下列操作:

  • 启动 Visual Studio .NET 并创建一个新的名为 SecureMath 的 Visual C# ASP.NET Web 服务应用程序。

  • 将 service1.asmx 重命名为 math.asmx。

  • 打开 math.asmx.cs 并将 Service1 类重命名为 math

  • 将下列 Web 方法添加到 math 类。

     [WebMethod]public long Add(long operand1, long operand2){    return (operand1 + operand2);}  
  • 要创建 Web 服务,请单击 Build 菜单上的 Build Solution

返回页首

将 Web 服务虚拟目录配置为需要 SSL

您的 Web 服务在 Internet 信息服务 (IIS) 上运行并依赖于 IIS 来提供 SSL 支持。

此过程假定您在 Web 服务器上安装了有效的服务器证书。有关安装 Web 服务器证书的详细信息,请参阅“How To Set Up SSL on a Web Server”。

要使用 IIS 配置 Web 服务的虚拟目录来采用 SSL ,请执行下列操作:

  1. 在 Web 服务宿主计算机上,启动 IIS

  2. 导航到 SecureMath 虚拟目录。

  3. 右键单击 SecureMath,然后单击 Properties

  4. 单击 Directory Security 选项卡。

  5. Secure communications 下,单击 Edit

    如果 Edit 不可用,最可能的原因是未安装 Web 服务器证书。

  6. 选择 Require secure channel (SSL) 复选框。

  7. 单击 OK,然后再次单击 OK

  8. Inheritance Overrides 对话框中,单击 Select All,然后单击 OK 关闭 SecureMath 属性对话框。

此操作将新的安全性设置应用到虚拟目录根下的所有子目录。

返回页首

使用浏览器测试 Web 服务

此过程确保 Web 服务器证书是有效的,并已由受客户端计算机信任的证书颁发机构 (CA) 颁发。

要使用 SSL Internet Explorer 调用 Web 服务,请执行下列操作:

  1. 启动客户端计算机上的 Internet Explorer 并浏览(使用 HTTPS)到 Web 服务。例如:

    https://WebServer/SecureMath/math.asmx  

    浏览器应显示出Web 服务测试页。

  2. 如果成功显示了 Web 服务测试页,则关闭 Internet Explorer 并转到“开发一个 Web 应用程序来调用服务组件”这一过程。

  3. 如果显示 Security Alert 对话框(如图 1 所示),则单击 View Certificate 会看到颁发 Web 服务器证书的发证 CA 的标识。您必须在客户端计算机上安装 CA 的证书。“在客户端计算机上安装证书颁发机构的证书”这一过程中描述了这一内容。

  4. 关闭 Internet Explorer。

    fh13sn02

    1. Security Alert 对话框
返回页首

在客户端计算机上安装证书颁发机构的证书

此过程将发证 CA 的证书作为受信任的根证书颁发机构安装在客户端计算机上。客户端计算机为了在不显示 Security Alert 对话框的情况下接受服务器证书,必须信任发证 CA。

如果将 Microsoft 证书服务用作 Windows 域内的 CA

只有在 Web 服务器证书已由 Microsoft 证书服务 CA 颁发的情况下才执行此过程。否则,如果有 CA 的 .cer 文件,则转至步骤 8。

  1. 启动 Internet Explorer 并浏览到 http:// hostname/certsrv,其中 hostname 是颁发服务器证书的 Microsoft 证书服务所在计算机的名称。

  2. 单击 Retrieve the CA certificate or certificate revocation list,然后单击 Next

  3. 单击 Install this CA certification path

  4. Root Certificate Store 对话框中,单击 Yes

  5. 使用 HTTPS 浏览到 Web 服务。例如:

    https://WebServer/SecureMath/math.asmx  

    现在 Web 服务测试页应由浏览器正确显示,而不显示 Security Alert 对话框。

    您现在已在个人受信任的根证书存储中安装了 CA 的证书。要能成功地从 ASP.NET 页调用 Web 服务,必须将 CA 的证书添加到计算机的受信任的根存储中。

  6. 重复步骤 1 和 步骤 2,单击 Download CA certificate,然后将其保存到本地计算机上的文件中。

  7. 现在执行其余的步骤。

    如果有 CA的 .cer 证书文件:

  8. 在任务栏上,单击 Start,然后单击 Run

  9. 键入 mmc,然后单击 OK

  10. Console 菜单上,单击 Add/Remove Snap-in

  11. 单击 Add

  12. 选择 Certificates,然后单击 Add

  13. 选择 Computer account,然后单击 Next

  14. 选择 Local Computer: (the computer this console is running on),然后单击 Finish

  15. 单击 Close,然后单击 OK

  16. 在 MMC 管理单元的左侧窗格中展开 Certificates (Local Computer)。

  17. 展开 Trusted Root Certification Authorities

  18. 右键单击 Certificates,指向 All Tasks,然后单击 Import

  19. 单击 Next 跳过“证书导入向导”的 Welcome 对话框。

  20. 输入 CA 的 .cer 文件的路径和文件名。

  21. 单击 Next

  22. 选择 Place all certificates in the following store,然后单击 Browse

  23. 选择 Show physical stores

  24. 展开列表内的 Trusted Root Certification Authorities,然后选择 Local Computer

  25. 单击 OK,单击 Next,然后单击 Finish

  26. 单击 OK 关闭确认消息框。

  27. 刷新 MMC 管理单元内的 B>Certificates 文件夹的视图,并确认是否已列出 CA 的证书。

  28. 关闭 MMC 管理单元。

返回页首

开发一个 Web 应用程序来调用 Web 服务

此过程将创建一个简单的 ASP.NET Web 应用程序。并将此 ASP.NET Web 应用程序用作客户端应用程序来调用 Web 服务。

要创建一个简单的 ASP.NET Web 应用程序,请执行下列操作:

  1. 在 Web 服务客户端计算机上,创建一个新的名为 SecureMathClient 的 C# ASP.NET Web 应用程序。

  2. 添加一个对 Web 服务的 Web 引用(通过使用 HTTPS)。

    1. 右键单击解决方案资源管理器内的 References 节点,然后单击 Add Web Reference

    2. Add Web Reference 对话框中,输入 Web 服务的 URL。确保您使用一个 HTTPS URL。

      如果您没有使用 HTTPS 而设置了一个对 Web 服务的 Web 引用,则可以手动编辑已生成的代理类文件,并将设置 Url 属性的代码行从 HTTP URL 更改为 HTTPS URL。

    3. 单击 Add Reference

  3. 打开 WebForm1.aspx.cs 并将下列 using 语句添加到现有的 using 语句下。

    using SecureMathClient.WebReference1;  
  4. 在 Designer 模式下查看 WebForm1.aspx 并使用下列 ID 创建一个如 2 所示的窗体:

    • operand1

    • operand2

    • result

    • add

    fh13sn03

    2. WebForm1.aspx 窗体
  5. 双击 Add 按钮创建一个按钮单击事件处理程序。

  6. 将下列代码添加到事件处理程序中:

    private void add_Click(object sender, System.EventArgs e){  math mathService = new math();  int addResult = (int) mathService.Add( Int32.Parse(operand1.Text),                                          Int32.Parse(operand2.Text));  result.Text = addResult.ToString();}  
  7. Build 菜单上,单击 Build Solution

  8. 运行此应用程序。输入要做加法运算的两个数,然后单击 Add 按钮。

  9. Web 应用程序将使用 SSL 调用 Web 服务。

返回页首

其他资源

  • How To Create a Remote Component Hosted by IIS

  • How To Set Up SSL on a Web Server

  • How To Call a Web Service Using Client Certificates

  • 原文地址:http://msdn.microsoft.com/en-us/library/aa302409.aspx

原创粉丝点击