SSL 是一種安全傳輸協(xié)議窿克,其全稱是 Secure socket layer(安全套接層)缨该。該協(xié)議最初由 Netscape 研發(fā)腹忽,現(xiàn)已成為網(wǎng)絡(luò)上用來鑒別網(wǎng)站和網(wǎng)頁瀏覽者身份猖败,以及在瀏覽器使用者及網(wǎng)頁服務(wù)器之間進行加密通訊的全球化標(biāo)準(zhǔn)旷偿。由于 SSL 技術(shù)已經(jīng)得到所有主流瀏覽器和 WEB 服務(wù)器的支持烹俗,因此僅需要安裝配置數(shù)字證書就可以激活服務(wù)器功能了。
SSL的工作原理
SSL協(xié)議分為 Handshake Protocol 和 Record Protocol 兩個部分萍程。其中 Handshake Protocol 用來協(xié)商密鑰幢妄,協(xié)議的大部分內(nèi)容就是通信雙方如何利用它來安全的協(xié)商出一份密鑰。Record Protocol 則定義了傳輸?shù)母袷健?/p>
SSL是一個介于 HTTP 與 TCP 之間的一個可選層茫负,如果利用 SSL 協(xié)議來訪問網(wǎng)頁蕉鸳,其步驟如下:
- 用戶:在瀏覽器的地址欄里輸入 https://www.123.com
- HTTP層:將用戶需求翻譯成HTTP請求,如:
GET /index.htm HTTP/1.1
Host http://www.123.com - SSL層:借助下層協(xié)議的的信道忍法,安全的協(xié)商出一份加密密鑰置吓,并用此密鑰來加密HTTP請求。
- TCP層:與服務(wù)器的443端口建立連接缔赠,傳遞SSL處理后的數(shù)據(jù)衍锚。
- 接收端(即服務(wù)器)與此過程相反。
SSL在TCP之上建立了一個加密通道嗤堰,通過這一層的數(shù)據(jù)經(jīng)過了加密戴质,因此達到保密的效果度宦。
如果上面你看得不太懂的話,我們來看一個更形象的比喻告匠,我們假設(shè) A 與 B 通信戈抄,A 是 SSL 客戶端,B 是 SSL 服務(wù)器端后专,加密后的消息放在方括號 [ ] 里划鸽,以突出和明文消息的區(qū)別。雙方的處理動作的說明用圓括號( )括起戚哎。
A:
我想和你安全的通話裸诽,我這里的對稱加密算法有 DES,RC5型凳,密鑰交換算法有 RSA 和 DH丈冬,摘要算法有 MD5 和 SHA。
B:
我們用 DES - RSA - SHA 這對組合好了甘畅。這是我的證書埂蕊,里面有我的名字和公鑰,你拿去驗證一下我的身份(把證書發(fā)給 A )疏唾。目前沒有別的可說的了蓄氧。
A:
(查看證書上 B 的名字是否無誤,并通過手頭早已有的 CA 的證書驗證了
B 的證書的真實性槐脏。如果其中一項有誤匀们,發(fā)出警告并斷開連接。這一步保證了 B 的公鑰真實性准给。)(產(chǎn)生一份秘密消息,這份秘密消息處理后將用作加密密鑰重抖,加密初始化向量和hmac的密鑰露氮。將這份秘密消息-協(xié)議中稱為 per_master_secret 用 B 的公鑰加密,封裝成稱作 Client Key Exchange 的消息钟沛。由于用了 B 的公鑰畔规,保證了第三方無法竊聽。)
我生成了一份秘密消息恨统,并用你的公鑰加密了叁扫,給你(把 Client Key Exchange 發(fā)給 B)
注意,下面我就要用加密的辦法給你發(fā)消息了畜埋!(將秘密消息進行處理莫绣,生成加密密鑰,加密初始化向量和hmac的密鑰悠鞍。)
[我說完了]
B:
(用自己的私鑰將 Client Key Exchange 中的秘密消息解密出來对室,然后將秘密消息進行處理,生成加密密鑰,加密初始化向量和 hmac 的密鑰掩宜,這時雙方已經(jīng)安全的協(xié)商出一套加密辦法了蔫骂。)
注意,我也要開始用加密的辦法給你發(fā)消息了牺汤!
[我說完了]
A:
[我的秘密是……]
B:
[其它人不會聽到的……]