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 服務。 | |