1 . SSL(Server Socket Layer) 簡介
在網(wǎng)絡(luò)上信息在源 -
宿的傳遞過程中會經(jīng)過其它的計算機。一般情況下,中間的計算機不會監(jiān)聽路過的信息。但在使用網(wǎng)上銀行或者進行信用卡交易的時候有可能被監(jiān)視,從而導(dǎo)致個人
隱私的泄露。由于 Internet 和 Intranet
體系結(jié)構(gòu)的原因,總有某些人能夠讀取并替換用戶發(fā)出的信息。隨著網(wǎng)上支付的不斷發(fā)展,人們對信息安全的要求越來越高。因此 Netscape
公司提出了 SSL 協(xié)議,旨在達到在開放網(wǎng)絡(luò) (Internet) 上安全保密地傳輸信息的目的,這種協(xié)議在 WEB 上獲得了廣泛的應(yīng)用。 之后
IETF(ietf.org) 對 SSL 作了標(biāo)準(zhǔn)化,即 RFC2246 ,并將其稱為 TLS ( Transport Layer
Security ),從技術(shù)上講, TLS1.0 與 SSL3.0 的差別非常微小。
2 . SSL 工作原理
SSL 協(xié)議使用不對稱加密技術(shù)實現(xiàn)會話雙方之間信息的安全傳遞。可以實現(xiàn)信息傳遞的保密性、完整性,并且會話雙方能鑒別對方身份。不同于常用的 http 協(xié)議,我們在與網(wǎng)站建立 SSL 安全連接時使用 https 協(xié)議,即采用 https://ip:port/ 的方式來訪問。當(dāng)我們與一個網(wǎng)站建立 https 連接時,我們的瀏覽器與 Web Server 之間要經(jīng)過一個握手的過程來完成身份鑒定與密鑰交換,從而建立安全連接。具體過程如下:
用戶瀏覽器將其 SSL 版本號、加密設(shè)置參數(shù)、與 session 有關(guān)的數(shù)據(jù)以及其它一些必要信息發(fā)送到服務(wù)器。
服務(wù)器將其 SSL 版本號、加密設(shè)置參數(shù)、與 session 有關(guān)的數(shù)據(jù)以及其它一些必要信息發(fā)送給瀏覽器,同時發(fā)給瀏覽器的還有服務(wù)器的證書。如果配置服務(wù)器的 SSL 需要驗證用戶身份,還要發(fā)出請求要求瀏覽器提供用戶證書。
客戶端檢查服務(wù)器證書,如果檢查失敗,提示不能建立 SSL 連接。如果成功,那么繼續(xù)。客戶端瀏覽器為本次會話生成 pre-master
secret
,并將其用服務(wù)器公鑰加密后發(fā)送給服務(wù)器。如果服務(wù)器要求鑒別客戶身份,客戶端還要再對另外一些數(shù)據(jù)簽名后并將其與客戶端證書一起發(fā)送給服務(wù)器。
如果服務(wù)器要求鑒別客戶身份,則檢查簽署客戶證書的 CA 是否可信。如果不在信任列表中,結(jié)束本次會話。如果檢查通過,服務(wù)器用自己的私鑰解密收到的 pre-master secret ,并用它通過某些算法生成本次會話的 master secret 。
客戶端與服務(wù)器均使用此 master secret 生成本次會話的會話密鑰 ( 對稱密鑰 ) 。在雙方 SSL 握手結(jié)束后傳遞任何消息均使用此會話密鑰。這樣做的主要原因是對稱加密比非對稱加密的運算量低一個數(shù)量級以上,能夠顯著提高雙方會話時的運算速度。
客戶端通知服務(wù)器此后發(fā)送的消息都使用這個會話密鑰進行加密。并通知服務(wù)器客戶端已經(jīng)完成本次 SSL 握手。
服務(wù)器通知客戶端此后發(fā)送的消息都使用這個會話密鑰進行加密。并通知客戶端服務(wù)器已經(jīng)完成本次 SSL 握手。
本次握手過程結(jié)束,會話已經(jīng)建立。雙方使用同一個會話密鑰分別對發(fā)送以及接受的信息進行加、解密。