傳統(tǒng)的網(wǎng)絡(luò)通信使用的是HTTP傳輸協(xié)議,全程公開所以容易被人監(jiān)聽和劫持,同時HTTP協(xié)議無法驗證通信雙方身份,因此給了釣魚網(wǎng)站可乘之機(jī)。裝上SSL證書將升級為HTTPS加密協(xié)議,今天分享下SSL的工作原理及詳細(xì)的握手過程。
一、什么是 SSL
SSL代表安全套接字層,是指用于加密、保護(hù)和驗證互聯(lián)網(wǎng)上之通信的協(xié)議。盡管SSL在一段時間前已被稱為 TLS(傳輸層安全性)的更新協(xié)議代替,但“SSL”仍是該技術(shù)的常用術(shù)語。
SSL/TLS 的主要用例是保護(hù)客戶端和服務(wù)器之間的通信安全,但它也可以保護(hù)不安全網(wǎng)絡(luò)上的電子郵件、VoIP 和其他通信。
二、什么是SSL證書
SSL證書是一種用于在Web服務(wù)器和客戶端瀏覽器之間建立加密鏈接的數(shù)字證書。通過配置和應(yīng)用SSL證書啟用HTTPS協(xié)議,可實現(xiàn)對網(wǎng)站真實性的確認(rèn)和信息傳輸過程的加密處理,有效保障數(shù)據(jù)傳輸?shù)陌踩浴TS多證書頒發(fā)機(jī)構(gòu)對SSL證書收費,目前國內(nèi)各大云服務(wù)器商都有免費SSL證書可申請。
三、SSL / TLS 以及 SSL / TLS 握手的概念
SSL 和 TLS 協(xié)議可以為通信雙方提供識別和認(rèn)證通道,從而保證通信的機(jī)密性和數(shù)據(jù)完整性。TLS 協(xié)議是從Netscape SSL 3.0協(xié)議演變而來的,不過這兩種協(xié)議并不兼容,SSL 已經(jīng)逐漸被 TLS 取代,所以下文就以 TLS 指代安全層。TLS 握手是啟動 HTTPS 通信的過程,類似于 TCP 建立連接時的三次握手。在 TLS 握手的過程中,通信雙方交換消息以相互驗證,相互確認(rèn),并確立它們所要使用的加密算法以及會話密鑰(用于對稱加密的密鑰)。可以說,TLS 握手是 HTTPS 通信的基礎(chǔ)部分。
四、SSL的工作原理
當(dāng)客戶端向一個https網(wǎng)站發(fā)起請求時,服務(wù)器會將SSL證書發(fā)送給客戶端進(jìn)行校驗,SSL證書中包含一個公鑰。校驗成功后,客戶端會生成一個隨機(jī)串,并使用受訪網(wǎng)站的SSL證書公鑰進(jìn)行加密,然后再發(fā)送給網(wǎng)站服務(wù)器。
網(wǎng)站服務(wù)器收到加密的隨機(jī)串后,會利用自己的私鑰進(jìn)行解密,得到由客戶端生成的隨機(jī)串。服務(wù)器使用這一隨機(jī)串,開始與客戶端進(jìn)行對稱加密通信,客戶端使用隨機(jī)串對服務(wù)器發(fā)來的信息進(jìn)行加密。
從這個過程中可以看出,SSL證書同時使用了非對稱加密和對稱加密,使用非對稱加密運(yùn)送一把“鑰匙”給服務(wù)器,保證“鑰匙”的安全性,服務(wù)器得到“鑰匙”后,使用這把“鑰匙”對信息進(jìn)行加密,整個傳輸過程都處于加密狀態(tài),有效保障了信息的完整性、準(zhǔn)確性和安全性。
五、SSL / TLS 握手詳細(xì)過程
接下來看下 TLS 握手的詳細(xì)過程,此圖與 HTTPS 原理圖的流程大致相同,不同的是此圖把重點放在了 TLS 握手的相關(guān)概念上。
1、"client hello"消息:客戶端通過發(fā)送"client hello"消息向服務(wù)器發(fā)起握手請求,該消息包含了客戶端所支持的 TLS 版本和密碼組合以供服務(wù)器進(jìn)行選擇,還有一個"client random"隨機(jī)字符串。
2、"server hello"消息:服務(wù)器發(fā)送"server hello"消息對客戶端進(jìn)行回應(yīng),該消息包含了數(shù)字證書,服務(wù)器選擇的密碼組合和"server random"隨機(jī)字符串。
3、驗證:客戶端對服務(wù)器發(fā)來的證書進(jìn)行驗證,確保對方的合法身份,驗證過程可以細(xì)化為以下幾個步驟:
① 檢查數(shù)字簽名
② 驗證證書鏈 (這個概念下面會進(jìn)行說明)
③ 檢查證書的有效期
④ 檢查證書的撤回狀態(tài) (撤回代表證書已失效)
4、"premaster secret"字符串:客戶端向服務(wù)器發(fā)送另一個隨機(jī)字符串"premaster secret (預(yù)主密鑰)",這個字符串是經(jīng)過服務(wù)器的公鑰加密過的,只有對應(yīng)的私鑰才能解密。
5、使用私鑰:服務(wù)器使用私鑰解密"premaster secret"。
6、生成共享密鑰:客戶端和服務(wù)器均使用 client random,server random 和 premaster secret,并通過相同的算法生成相同的共享密鑰 KEY。
7、客戶端就緒:客戶端發(fā)送經(jīng)過共享密鑰 KEY 加密過的"finished"信號。
8、服務(wù)器就緒:服務(wù)器發(fā)送經(jīng)過共享密鑰 KEY 加密過的"finished"信號。
9、達(dá)成安全通信:握手完成,雙方使用對稱加密進(jìn)行安全通信。
以上是SSL的工作原理及詳細(xì)的握手過程介紹。通過安裝和部署SSL證書啟用更為安全的HTTPS傳輸協(xié)議,對傳輸數(shù)據(jù)進(jìn)行加密處理,并有效驗證服務(wù)器身份,最大程度避免了信息泄露和釣魚網(wǎng)站。特別是一些重點行業(yè)和領(lǐng)域,SSL證書已成為保障網(wǎng)站數(shù)據(jù)安全的一種“標(biāo)配”。