概述
HTTPS就是在安全的傳輸層上發(fā)送的HTTP瘫怜。它在將HTTP報(bào)文發(fā)送給TCP之前谎柄, 先將其發(fā)送給了一個(gè)安全層膏斤,對(duì)其進(jìn)行加密彻舰。
HTTPS VS HTTP
方案
當(dāng)請(qǐng)求一個(gè)客戶端對(duì)某web資源執(zhí)行某事務(wù)時(shí), 它會(huì)去檢查URL的方案诫咱。
- 如果URL的方案是http笙隙,客戶端就會(huì)打開(kāi)一條到服務(wù)器端口80的連接, 并向其發(fā)送http命令
- 如果是https坎缭,客戶端就會(huì)
(1) 打開(kāi)一條到服務(wù)器端口443的連接
(2) 然后與服務(wù)器握手 竟痰,以二進(jìn)制格式與服務(wù)器交換一些SSL安全參數(shù),附上加密的http命令掏呼。
建立安全傳輸
未加密的HTTP中
客戶端會(huì)打開(kāi)一條到web服務(wù)器端口80的tcp連接坏快,發(fā)送一條請(qǐng)求報(bào)文,接收一條響應(yīng)報(bào)文憎夷,關(guān)閉連接
https中
- 打開(kāi)開(kāi)一條到web服務(wù)器端口443的連接莽鸿,
- 一旦建立了tcp連接,客戶端和服務(wù)器就會(huì)初始化ssl層拾给,對(duì)加密的參數(shù)進(jìn)行溝通祥得,并交換密鑰。
- 握手完成之后鸣戴, SSL初始化就完成了啃沪,客戶端就可以將請(qǐng)求報(bào)文發(fā)送給安全層。
-
在將報(bào)文發(fā)送給TCP之前窄锅,要先對(duì)其進(jìn)行加密
SSL握手
在發(fā)送已加密的HTTP報(bào)文之前,客戶端和服務(wù)器要進(jìn)行一次SSL握手缰雇,在這個(gè)握手過(guò)程中入偷,它們要完成的工作有
- 交換協(xié)議版本號(hào)
- 選擇一個(gè)兩端都了解的密碼
- 對(duì)兩端的身份進(jìn)行認(rèn)證
- 生成臨時(shí)的會(huì)話密鑰,以便加密信道