目标
本模块用于:
• |
将一个 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 的经验。 |
• |
本模块介绍了 SSL 并描述了最常用到它的一些情况。 |
• |
必须有一个安装了 SSL 证书的
Web 服务器。 |
• |
您的客户端计算机必须已经信任为您的服务器颁发
SSL 证书的 CA,或您必须有对 CA 证书的访问权,以便可以使用本模块中描述的过程来信任它。 |
本页内容
摘要
Web 服务及其客户端应用程序之间的通信经常带有安全性敏感信息,而这些信息可受益于安全套接字层
(SSL) 协议提供的数据完整性和保密性。
本模块描述了如何配置 ASP.NET Web 服务来要求客户端对所有通信使用 SSL,并说明了如何使用
HTTPS 协议从 ASP.NET 客户端应用程序调用 Web 服务。
注 本方法文档中的信息还适用于 ASP.NET 和 Microsoft Internet
信息服务 (IIS) 所宿主的远程对象(使用 .NET 远程技术)。
创建一个简单的
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
菜单上的 BuildSolution。 |
将
Web 服务虚拟目录配置为需要 SSL
您的 Web 服务在 Internet 信息服务 (IIS) 上运行并依赖于 IIS 来提供
SSL 支持。
此过程假定您在 Web 服务器上安装了有效的服务器证书。
要使用 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。

图 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. |
选择 LocalComputer: (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 |

图 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 菜单上,单击 BuildSolution。 |
8. |
运行此应用程序。输入要做加法运算的两个数,然后单击 Add
按钮。 |
9. |
Web 应用程序将使用 SSL 调用 Web 服务。 |
|