現今SSL安全協議廣泛地用在Internet和Intranet的服務器產品和客戶端產品中,用于安全地傳送數據,集中到每個WEB服務器和瀏覽器中,從而來保證來用戶都可以與Web站點安全交流 。本文將詳細介紹SSL安全協議及在WEB服務器安全的應用。
一、SSL安全協議在WEB服務器中的應用
1、我們為提供具有真正安全連接的高速安全套接層SSL)交易,可以將PCI卡形式的SSL卸載(offloading)設備直接安裝到Web服務器上,這種做法的好處是:
(1)從客戶機到安全Web服務器的數據安全性;
(2)由于卸載工具執行所有SSL處理過程并完成TCP/IP協商,因此大大提高了吞吐量;
(3)簡化了密鑰的管理和維護。
安全性加大在實現向電子商務和其它安全Web站點的服務器增加SSL加速和卸載設備的結果是提高了交易處理速度。但是由于設備是作為應用被安裝在網絡上的,因此設備與安全服務器之間的數據是未加密的。將SSL卸載設備作為PCI擴展卡直接安裝在安全服務器上,保證了從瀏覽器到服務器的連接安全性。
SSL可以用于在線交易時保護象信用卡號以及股票交易明細這類敏感信息。受SSL保護的網頁具有"https"前綴,而非標準的"http"前綴
2、新型專用網絡設備SSL加速器可以使Web站點通過在優化的硬件和軟件中進行所有的SSL處理來滿足性能和安全性的需要。
當具有SSL功能的瀏覽器(Navigator、IE)與Web服務器(Apache、IIS)通信時,它們利用數字證書確認對方的身份。數字證書是由可信賴的第三方發放的,并被用于生成公共密鑰。
當最初的認證完成后,瀏覽器向服務器發送48字節利用服務器公共密鑰加密的主密鑰,然后Web服務器利用自己的私有密鑰解密這個主密鑰。最后,瀏覽器和服務器在會話過程中用來加解密的對稱密鑰集合就生成了。加密算法可以為每次會話顯式地配置或協商,最廣泛使用的加密標準為"數據加密標準"(DES)和RC4。
一旦完成上述啟動過程,安全通道就建立了,保密的數據傳輸就可以開始了。盡管初始認證和密鑰生成對于用戶是透明的,但對于Web服務器來說,它們遠非透明。由于必須為每次用戶會話執行啟動過程,因而給服務器CPU造成了沉重負擔并產生了嚴重的性能瓶頸。據測試,當處理安全的SSL會話時,標準的Web服務器只能處理1%到10%的正常負載。
二、應做的處理
密碼在加解密數據時,使用兩種類型的密鑰。私有密鑰被發給各實體并且永遠不向外透露,公共密鑰可以任意分發。這兩種密鑰對于認證過程是必不可少的。使用公鑰加密的數據不能使用同一個密鑰進行解密,必須使用私有密鑰進行解密。
SSL使用復雜的數學公式進行數據加密和解密,這些公式的復雜性根據密碼的強度不同而不同。高強度的計算會使多數服務器停頓,導致性能下降。多數Web服務器在執行SSL相關任務時,吞吐量會顯著下降,性能比在只執行HTTP 1.0連接時的速度慢50多倍。而且由于SSL復雜的認證方案和加/解密算法,SSL需要大量地消耗CPU資源,從而造成Web服務器性能很大的下降。它所造成的服務器瓶頸使Web站點的速度慢如蝸牛爬行,這無疑會失去在線客戶。
為解決這種性能上的損失,我們可以通過安裝SSL加速器和卸載器來減少SSL交易中的時延。加速器通過執行一部分SSL處理任務來提高交易速度,同時依靠安全Web服務器軟件完成其余的任務。卸載器承擔所有SSL處理任務并且不需要安全Web服務器軟件,從而使Web服務器可以以同樣的高速度提供安全和非安全的服務。由于密鑰管理和維護過程不依靠對應用軟件的手工配置,因此使用卸載器效率會更高一些。
多數這類設備作為網絡應用被安裝在機架式或小底座網絡設備上,由于它們為整個網絡提供加解密服務,因此設備與Web服務器之間的數據是未加密的。
通過直接在服務器上安裝SSL卸載器,可以解決速度和安全性問題。加密的數據由客戶機經過Internet和網絡直接傳送到一臺服務器上。安裝在這臺服務器上的卸載器對數據進行解密并將其沿PCI總線直接傳送到處理器。這樣做的結果是宿主服務器在保證客戶機與服務器之間傳輸時數據安全性的同時,以非安全交易服務同樣的速度提供了安全交易服務。
SSL加速設備的出現就是為了解決對CPU資源過量需求的SSL協議所造成的性能問題,這類設備是一些用以在不增加Web服務器負擔的條件下處理SSL任務的特殊的網絡部件。通過優化硬件和軟件,專用SSL加速器處理SSL會話的速度為標準Web服務器的10到40倍。此外,SSL加速器解放了服務器資源,使這些資源可以真正用于處理應用邏輯和數據庫查詢,從而加快了整個站點的速度。
將SSL設備集成到網絡中很簡單,第4層到第7層交換機或負載均衡設備被配置為將所有的443端口(Https)請求改向傳送到SSL設備。這時,這臺設備承擔所有的SSL處理任務,因而立即解脫了Web服務器的負載。隨著安全傳輸流容量的增加,在不增加不必要的管理負擔的條件下,可以再部署其他SSL設備。
最近,SSL加速器功能已經被集成到象服務器端緩存(即所謂的"服務器加速器")這類Web內容提交產品中了。這種作法的主要好處是,服務器加速器進行SSL處理和對象提交。
配置SSL功能的服務器加速器使廣泛地將SSL用于Web基礎設施上的安全內容交換成為可能,安全網頁將快速地得到提交,安全交易也將迅速地完成。
三、如何實現WEB和Internet安全
我們在安裝好Certificate Server后,給自己的Web Server發一張證書,安全站點已經建立起來了,在IIS管理器中打開安全通道(先不要接受客戶證書驗證,如果沒有瀏覽器證書的話),把http改為https后訪問的站點,怎么系統提示服務器證書有問題?記得在瀏覽器中安裝的根證書了?要不就是服務器證書過期了,如果沒有在瀏覽器中安裝根證書,就要安裝它,同時其他人通過Internet訪問站點如果沒有安裝根證書,需要將根證書放在網上讓別人下載。用IE安裝根證書很簡單,瀏覽器提示用戶打開或保存時選擇打開,會看到根證書信息然后按安裝證書就可以了。但可能會發現Netscap無法安裝根證書,SSL協議是由Netscape首先提出并實現的,Netscape使用MIME類型application/x-x509-ca-cert來表示CA證書,IE3.1以后開始支持SSL,起初Windows系統的數字證書文件(.crt和.cer)也采用相同的MIME類型,IE5.0以后MIME類型被改為application/pkix-cert這就造成Netscape安裝根證書困難。不過這個問題好解決,只要在IIS里新注冊application/x-x509-ca-cert的MIME類型就可以了。剛發的證書瀏覽器有時也會顯示證書過期,這是因為瀏覽器判斷證書有效是從證書有效起始時間的后一天開始,此外數字證書中的日期大都是GMT時間而不是本地時間,所以通常將本機時間向后調整一天這個問題就能解決,所以證書過期不僅僅可能表示太晚也可能表示太早。
一切都已經就緒,進入安全網頁了,在IE的狀態欄里應該有一個小鎖,雙擊這個小鎖能看到站點證書信息,同時也能看到整個證書鏈。現在也許會問"那么現在我怎么用SSL加密我的數據呢?",實際上現在瀏覽器和Web服務器之間交換的所有信息都已經被加密,SSL是工作在網絡層與會話層之間的協議,它在TCP/IP和HTTP之間增加了一個加密層,所以對于工作在HTTP協議以上的用戶而言,加密是完全透明的,所以請忘記"用SSL加密"這句話,除非直接在Socket上開發,比如寫個網絡螞蟻之類的。
現在想用SSL實現更多的東西,不僅僅是加密。是申請瀏覽器(客戶)證書的時候了,申請客戶證書過程也不復雜,除了相同的名稱,國家之類的還多一個EMail地址,如果用IE申請證書可能會有許多選項,其中有兩個比較有意義,"允許私鑰被導出"對與不在固定機器上上網的人比較有用,如果在一臺機器上申請了證書,導出證書和私鑰并安裝到其他機器上就可以在其他機器上使用了。"用戶保護"會讓瀏覽器在使用的私鑰時提示,這通常發生在加密和簽名過程之前。證書安裝過程通常都是自動的,安裝完成后可以欣賞一下,在IE中打開Internet選項,選擇內容一欄,按"證書"按鈕",在個人一欄內應該有客戶證書。
現在在IIS管理器中設置站點要求客戶證書,然后訪問站點,瀏覽器會彈出一個對話框,讓選擇要使用的客戶證書,然后就進去了,也沒什么不同。那么怎么樣利用SSL實現身份認證呢?首先可以在IIS管理器中啟用客戶證書映射,將客戶證書影射到NT帳號,可以映射某張證書,也可以映射所有根證書所簽發的客戶證書,如果在簽發者列表中找不到根證書,需要運行SSLCA.exe(IIS4.0以上),以后的事就屬于NT管理員的范疇了。如果不想用NT的安全機制,就需要獲取對方客戶證書的信息,然后進行判斷。通常客戶證書的信息由HTTPS_開頭的服務器變量提供,如Apache Server,Domino等,可以查看文檔或者寫一個小的CGI程序列出所有的服務器變量。如果是IIS就更簡單了:
用 Request.ClientCertificate( Key[SubField] )可以訪問想要的內容:
如可顯示客戶證書的國家代碼。具體參數請在MSDN搜索ClientCertificate。