HTTPS
- HTTPS(Hyper Text Transfer Protocol Secure):超文本傳輸安全協(xié)議
- 常稱為HTTP over TLS, HTTP over SSL, HTTP Secure
- HTTPS的默認端口是443
- HTTPS是在HTTP的基礎(chǔ)上使用SSL/TLS來加密報文,對竊聽和中間人提供合理的防護
- SSL/TLS也可以用在其他協(xié)議上,比如 FTP -> FTPS, SMTP -> SMTPS
SSL/TLS - 工作在哪一層

SSL/TLS - 工作在哪一層
- SSL / TLS 工作在應用層和傳輸層之間
HTTPS的通信過程
- TCP的3次握手
- TLS的連接
- HTTP請求和響應
TLS 的連接

TLS 的連接
-
1.Client Hello,客戶端向服務端打招呼(TLS層)發(fā)送的數(shù)據(jù)內(nèi)容如下
- TSL的版本號
- 支持的加密組件(Cipher Suite)列表,加密組件是指所有的加密算法及密鑰長度
-
一個隨機數(shù)(Client Random)
-
- Server Hello,服務端響應,響應數(shù)據(jù)如下
- TLS的版本號
- 選擇的加密組件(是從接收到的客戶端加密組件列表中挑選出來的)
-
一個隨機數(shù)(Server Random)
-
- 發(fā)送證書(Certificate)
-
服務器的公鑰證書(被CA簽名過的)
-
Server Key Exchange
- 用以實現(xiàn)ECDHE算法的其中一個參數(shù)(Server Params)
- ECDHE是一種密鑰交換算法
-
為了防止偽造,Server Params經(jīng)過了服務器私鑰簽名
- 用以實現(xiàn)ECDHE算法的其中一個參數(shù)(Server Params)
-
5 Server Hello Done
-
告知客戶端:協(xié)商部分結(jié)束
目前為止:客戶端和服務器之間通過明文共享了 ClientRandom、Server Random、Server Params
而且,客戶端已經(jīng)拿到了服務器的公鑰證書,接下來,客戶端會驗證證書的真實性
-
-
- Client Key Exchange(用公鑰進行了加密)
-
用以實現(xiàn)ECDHE算法的另一個參數(shù)(Client Params)
目前為止。客戶端和服務器都用來了ECDHE算法的2個參數(shù):Server Params,Client Params
-
客戶端,服務器都可以
- 使用ECDHE算法根據(jù)ServerParam,Client Params計算出一個新的隨機密鑰串: Pre-master secret
- 然后結(jié)合Client Random,Server Random,Pre-master secret生成一個主密鑰
- 最后利用主密鑰衍生出其他密鑰:客戶端發(fā)送用的會話密鑰,服務端發(fā)送的用的會話密鑰等
-
- Change Cipher Spec
-
告知服務器:之后的通信采用計算出來的會話密鑰進行加密
-
- Finished
- 包含連接至今全部報文的整體校驗值(摘要),加密之后發(fā)送給服務器
- 這次握手協(xié)商是否成功,要服務器是否能夠正確解密報文作為判定標準
-
9.Change Cipher Spec
- 告知客戶端:服務端解密沒有問題,之后的通信采用計算出來的會話密鑰進行加密
-
- Finished
- 到目前為止,客戶端服務器都驗證加密解密沒問題,握手正式結(jié)束
- 后面開始傳輸加密的HTTP請求和響應






