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 服务。 | |
声明:中国IT运维网登载此文出于传递更多信息之目的,并不意味着本站赞同其观点或证实其描述。其原创性以及文中陈述
文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或
承诺,请网友及读者仅作参考,并请自行核实相关内容。如原作者不同意在本网站刊登内容,请及时通知本站予以删除。凡本网站注明"来源:中国IT运维网"的作品,在授权范围内使用时,请保留注明"来源:中国IT运维网"。