首先介紹一下SSL, SSL 的英文全稱是 "Secure Sockets Layer" ,中文名為 "安全套接層協議層 ",它是網景( Netscape )公司提出的基於 WEB 應用的安全協議。SSL協議可分為兩層: SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供數據封裝、壓縮、加密等基本功能的支持。SSL是Security Socket Layer的縮寫,技術上稱為安全套接字,可以簡單為加密通訊協議,使用SSL可以對通訊(包括電子郵件)內容進行高強度的加密,以防止黑客監聽您的通訊內容甚至是用戶密碼。
那麼在Xml Web Service上使用SSL有何意義呢?Xml Web Service傳輸的數據是Xml格式的,Xml是一種明文,而傳輸層通過tcp/ip來傳輸,而tcp/ip的傳輸可能被非法監聽,黑客可以輕易的將Xml數據解析出來,截獲信息甚至篡改數據,這樣就造成了Xml Web Service在數據傳輸中是很不安全的。利用SSL可以將原本的XML經過高強度的加密,從而有效的防止數據在傳輸過程中被非法截獲和篡改。
下面講下如何在XML Web Service上使用SSL,使用SSL需要一個數字證書,這個證書您可以通過商業購買也可以使用自己CA產生的證書,只是需要一些額外的工作而已。通常情況下,您的網絡服務用於單位之間的合作接口的話,用自己的CA產生的證書就完全就可以了,但象銀行這樣的金融機構,他們的用戶群比較大,最好還是購買證書。本文只闡述如何使用自己的CA產生SSL證書。
1. 安裝證書頒發機構
Windows 2003 標准版和服務器版都是自帶證書頒發機構的組件的,但是默認不安裝,要申請證書,必須安裝證書頒發機構組件,安裝方法:
打開控制面板-添加/刪除程序,選擇添加/刪除windows組件,插入Windows的安裝光盤,選擇“證書服務”,然後一路下一步即可。安裝成功之後,便可以進入下一步的申請SSL證書。
2.申請SSL證書
要想為Web Service設置SSL,必須將Web Service設置為網站,而不能是虛擬目錄。
首先,打開IIS,右鍵單擊web service所在網站 ,點擊目錄安全性,在安全通訊中選擇“服務器證書”,點 擊下一步,選擇”新建證書“,點擊下一步,然後選擇”現在准備證書請求,但稍後發送“,點擊下一步,輸入一個任意的證書名稱,位長選擇默認的1024即可,長度越長保密性越好,但性能越差。單擊下一步,輸入單位和部門,單擊下一步,出現如下界面:
注意:公共名稱必須填寫為訪問站點的域名,如:要想用下面的地址訪問Web Service,https://192.168.1.179/..,則此處必須填寫"192.168.1.179”,否則將提示使用了不安全的證書,導致站點無法訪問。將此步驟設置好以後,一路next即可。
在IE地址欄上輸入“http://localhost/certsrv/default.ASP”,在出現的網頁中,選擇“申請一個證書”,進入到下一個頁面,選擇“高級證書申請”,在下頁中選擇“使用Base64編碼的的CMC或PKCS#10文件提交一個證書申請,或使用一個PKCS#7文件續訂一個證書申請”,在下頁中,輸入在上一步中生成文件中base64代碼,保存的屬性可以為空,一路next即可。
接下來需要作的的工作通過證書頒發機構,頒發剛才申請的證書,單擊開始-管理工具-證書頒發機構,選掛起的的申請,在剛才申請的證書上點擊右鍵,選擇頒發,然後選擇頒發的證書,點擊剛才頒發的證書,選擇詳細信息,點擊“復制到文件”,一路next下去就可以了,將證書保存到一個文件中。
接下來,回到IIS設置中,在網絡服務的站點上,再次點擊服務器證書,選擇“處理掛起的請求並安裝”證書,選擇剛才導出的證書文件,下一步即可。安裝好證書後,點擊目錄安全性下-安全通訊-編輯,將“要求安全通道(SSL)"勾選上。這樣就完成了SSL設置,注意勾選上SSL後,必須用https來訪問,而訪問網站的端口也會使用SSL端口,默認為443,如果在您訪問站點的過程中出現無法正常訪問的問題,請檢查服務器防火牆是否禁止對SSl端口443的訪問,這點比較容易被忽視。還有一點,因為是自己CA產生的證書,如果要讓其他人能通過https訪問網絡服務,需要作額外的一點工作 ,將CA的根證書導入到客戶端證書的可信任機構中,客戶端就可以正常訪問網絡服務了。