如何使用SSL调用Web服务

日期: 2008-03-13 来源:TechTarget中国

  Web服务与其客户端应用程序之间进行通信时,通常会携带一些机密信息,它们可利用安全套接字层 (SSL) 协议所带来的数据完整性和保密性。本文介绍如何配置 ASP.NET Web 服务,从而要求客户端在所有的通信中都使用 SSL。此外,本文还展示了如何使用 HTTPS 协议从 ASP.NET 客户端应用程序调用该 Web 服务。


  注意:本文中的信息还适用于由 ASP.NET 和 Microsoft® Internet 信息服务 (IIS) 承载(使用 .NET Remoting 技术)的远程对象。


  创建一个简单的 Web 服务


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


  •在 Web 服务主机上创建一个简单的 Web 服务


  1.启动 Visual Studio .NET,创建一个新的名为 SecureMath 的 Visual C# ASP.NET Web 服务应用程序。
  2.将 service1.asmx 重命名为 math.asmx。
  3.打开 math.asmx.cs 并将 Service1 类重命名为 math。
  4.将下面的 Web 方法添加到 math 类。


  [WebMethod]
  public long Add(long operand1, long operand2)
  {
  return (operand1 + operand2);
  }


  5.要创建 Web 服务,在“生成”菜单上单击“生成解决方案”。


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


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


  此过程假设您在 Web 服务器上安装了有效的服务器证书。有关安装 Web 服务器证书的详细信息,请参见如何在 Web 服务器上设置 SSL。


  •使用 IIS 配置 Web 服务的虚拟目录以使用 SSL


  1.在 Web 服务主机上,启动 IIS。
  2.导航到 SecureMath 虚拟目录。
  3.右键单击 SecureMath,然后单击“属性”。
  4.单击“目录安全性”选项卡。
  5.单击“安全通信”下的“编辑”。如果无法使用“编辑”,则可能没有安装 Web 服务器证书。
  6.选择“要求安全通道 (SSL)”复选框。
  7.单击“确定”,然后再次单击“确定”。
  8.在“继承覆盖”对话框中,单击“全选”,然后单击“确定”以关闭 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.如果显示的是“安全警报”对话框(如图 1 所示),单击“查看证书”查看颁发 Web 服务器证书的 CA 的身份。您必须在客户端计算机上安装该 CA 的证书。过程“在客户端计算机上安装证书颁发机构的证书”对此进行了说明。
  4.关闭 Internet Explorer。



  图 1


  “安全警报”对话框


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


  此过程在客户端计算机上安装 CA 所颁发的证书,并将该 CA 作为受信任的根证书颁发机构。客户端计算机必须信任该颁发证书的 CA,以便接受服务器证书,但不显示“安全警报”对话框。


  •如果在 Windows 域中使用 Microsoft 证书服务作为 CA


  1.仅在您的 Web 服务器证书是由 Microsoft 证书服务 CA 颁发的情况下,才需执行此过程。否则,如果您有 CA 的 .cer 文件,请转到第 8 步。
  2.启动 Internet Explorer 并浏览到 http://hostname/certsrv,其中 hostname 是颁发服务器证书的 Microsoft 证书服务所在计算机的名称。
  3.单击“检索 CA 证书或证书吊销列表”,然后单击“下一步”。
  4.单击“安装此 CA 证书路径”。
  5.在“根证书存储”对话框中,单击“是”。
  6.使用 HTTPS 浏览到 Web 服务。例如:https://WebServer/securemath/math.asmx   浏览器中现在应该正确显示 Web 服务测试页,而不显示“安全警报”对话框。现在您已经在个人受信任根证书存储中安装了 CA 的证书。您必须将 CA 的证书添加到计算机的受信任根存储中,然后才能够从 ASP.NET 页成功调用 Web 服务。
  7.重复第 1 步和第 2 步,单击“下载 CA 证书”,然后将其保存到本地计算机上的某个文件中。
  8.现在执行其余步骤。如果有 CA 的 .cer 证书文件
  9.在任务栏上,单击“开始”,然后单击“运行”。
  10.键入“mmc”,然后单击“确定”。
  11.在“控制台”菜单上,单击“添加/删除管理单元”。
  12.单击“添加”。
  13.选择“证书”,然后单击“添加”。
  14.选择“计算机帐户”,然后单击“下一步”。
  15.选择“本地计算机 (运行这个控制台的计算机):”,然后单击“完成”。
  16.单击“关闭”,然后单击“确定”。
  17.在 MMC 管理单元的左窗格中展开“证书 (本地计算机)”。
  18.展开“受信任的根证书颁发机构”。
  19.右键单击“证书”,指向“所有任务”,然后单击“导入”。
  20.单击“下一步”跳过“证书导入向导”的“欢迎”对话框。
  21.输入 CA 的 .cer 文件的路径和文件名。
  22.单击“下一步”。
  23.选择“将所有的证书放入下列存储区”,然后单击“浏览”。
  24.选择“显示物理存储区”。
  25.在列表中展开“受信任的根证书颁发机构”,然后选择“本地计算机”。
  26.依次单击“确定”、“下一步”以及“完成”。
  27.单击“确定”关闭确认消息框。
  28.在 MMC 管理单元中刷新“证书”文件夹的视图,确认该 CA 的证书已列出。
  29.关闭 MMC 管理单元。


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


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


  •创建一个简单的 ASP.NET Web 应用程序


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


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


  1.右键单击解决方案资源管理器中的“引用”节点,然后单击“添加 Web 引用”。
  2.在“添加 Web 引用”对话框中,输入 Web 服务的 URL。确保使用 HTTPS URL。


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


  3.单击“添加引用”。
  3.打开 WebForm1.aspx.cs 并在现有 using 语句之下添加下面的 using 语句。


  using SecureMathClient.WebReference1;


  4.在“设计器”模式下查看 WebForm1.aspx,并使用以下 ID 创建一个与图 2 类似的窗体:


  •operand1
  •operand2
  •result
  •add



  图 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.在“生成”菜单上,单击“生成解决方案”。


  8.运行该应用程序。输入要相加的两个数,然后单击“Add”按钮。该 Web 应用程序将使用 SSL 调用 Web 服务。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐