SSL 縮寫(xiě) Secure Socket Layer ,是幾十年前網(wǎng)景公司制定的保證服務(wù)器和客戶端安全通信的一種協(xié)議,大量使用在http的安全通信中,這里的安全通信有兩層含義:
- 通信雙方身份的認(rèn)證
- 通信數(shù)據(jù)的保密
簡(jiǎn)單說(shuō)就是首先要對(duì)通信兩端的身份進(jìn)行認(rèn)證確保是真實(shí)的,接下來(lái)就是確保通信雙方交換的數(shù)據(jù)進(jìn)行加密確保只有真實(shí)的對(duì)手方才能看到,任何其他的人即便拿到數(shù)據(jù)也無(wú)法獲得有效信息。這里要注意, SSL 并不包含或?qū)崿F(xiàn)身份認(rèn)證的方法和數(shù)據(jù)加密方法, SSL 只是制定了一套可靠的 C-S 之間的協(xié)商辦法,來(lái)確定通信雙方如何身份認(rèn)證和加密。現(xiàn)在 SSL 里頭基本使用 PKI 數(shù)字證書(shū)方式認(rèn)證,加密的算法很多,對(duì)稱(chēng)非對(duì)稱(chēng),這些網(wǎng)上資料很多自己 google 之。
SSL 是如何工作的呢?基本上 SSL 的工作分為兩個(gè)階段:握手階段和數(shù)據(jù)傳輸階段,若通信期間檢測(cè)到不安全因素,比如握手時(shí)候發(fā)現(xiàn)另一端無(wú)法支持選擇的協(xié)議或加密算法,或者發(fā)現(xiàn)數(shù)據(jù)被篡改,這時(shí)通信一方會(huì)發(fā)送警告消息,不安全因素影響比較大兩端之間的通信就會(huì)終止,必須重新協(xié)商建立連接。
SSL 協(xié)議結(jié)構(gòu)如下:
通過(guò) SSL 分成三個(gè)子協(xié)議, HandShake( 握手) ChangeCipherSpec( 更改密鑰規(guī)格 ), Alert( 告警 ) 。
SSL 的告警協(xié)議是用來(lái)為通信對(duì)方發(fā)送一條告警消息,告警分為兩個(gè)層次: fatal 和 warning, 如果是 fatal 級(jí)別的如 mac 計(jì)算出錯(cuò)或協(xié)商密鑰算法失敗則馬上斷開(kāi)連接,要建立連接的話需要重新握手; warning 類(lèi)型的消息一般只會(huì)記錄日志,并不會(huì)斷開(kāi)連接。
SSL 更換密鑰規(guī)格 (change cipher spec) 協(xié)議獨(dú)立于握手協(xié)議,單獨(dú)屬于一類(lèi),也是其中最簡(jiǎn)單的一個(gè)。協(xié)議由單個(gè)消息組成 , 該消息只包含一個(gè)值為 1 的單個(gè)字節(jié)。該消息由客戶端和服務(wù)器端各自發(fā)出用來(lái)通知對(duì)方,從這個(gè)消息以后要開(kāi)始使用之前協(xié)商好的密鑰套件了,這個(gè)消息一般是在握手到發(fā)出 Finish 消息之前發(fā)出。
SSL 握手協(xié)議主要負(fù)責(zé)如下工作:
- 算法協(xié)商:首次通信時(shí),雙方通過(guò)握手協(xié)議協(xié)商密鑰加密算法,數(shù)據(jù)加密算法和文摘算法。
- 身份驗(yàn)證:在密鑰協(xié)商完成后,客戶端與服務(wù)器端通過(guò)證書(shū)互相驗(yàn)證對(duì)方的身份。
- 確定密鑰:最后使用協(xié)商好的密鑰交換算法產(chǎn)生一個(gè)只有雙方知道的秘密信息,客戶端和服務(wù)器各自根據(jù)這個(gè)秘密信息計(jì)算出加密密鑰,在接下來(lái)的記錄協(xié)議中用來(lái)對(duì)應(yīng)用數(shù)據(jù)進(jìn)行加密;
如果說(shuō)握手協(xié)議是 C/S 雙方的協(xié)商的話記錄協(xié)議就是利用協(xié)商結(jié)果對(duì)上層應(yīng)用提供兩種服務(wù):
- 機(jī)密性:使用協(xié)商好的通信密鑰對(duì)業(yè)務(wù)數(shù)據(jù)加解密;
- 數(shù)據(jù)完整性:利用協(xié)商好的 MAC 算法計(jì)算消息 HASH ,防止消息被篡改;
協(xié)議規(guī)定每個(gè)記錄層的協(xié)議數(shù)據(jù)包長(zhǎng)度不能超過(guò) 2^14(16K) ,因此記錄協(xié)議接收到層應(yīng)用業(yè)務(wù)數(shù)據(jù)若超長(zhǎng)會(huì)將業(yè)務(wù)數(shù)據(jù)分塊,壓縮 ( 可選 ) ,計(jì)算 MAC ,加密,按上記錄層協(xié)議頭發(fā)出去。






