十五.網(wǎng)絡(luò)協(xié)議學(xué)習(xí)筆記 HTTPS

HTTPS Hyper Text Transfer Protocol Secure 超文本傳輸安全協(xié)議

默認(rèn)端口443

SSL/TLS Transfer Layer Security 安全套接字

OpenSSL

TLS協(xié)議的開(kāi)源實(shí)現(xiàn)

image.jpeg

常用命令:

生成私鑰:openssl genrsa -out mj.key

生成公鑰:openssl rsa -in mj.key -pubout -out mj.pem

可以使用OpenSSL構(gòu)建一套屬于自己的CA,自己給自己頒發(fā)證書(shū),稱(chēng)為“自簽名證書(shū)”

TLS1.2連接過(guò)程

image.jpeg

1.client hello C->S

TLS版本號(hào)

支持的加密組件列表(所使用的加密算法和密鑰長(zhǎng)度等)

一個(gè)隨機(jī)數(shù)

2.Server Hello S->C

TLS版本號(hào)

選擇的加密組件(選中的加密算法)

一個(gè)隨機(jī)數(shù)

3.Certificate S->C

服務(wù)器的公鑰證書(shū)(被CA簽名過(guò))

4.Server Key Exchange S->C

用以實(shí)現(xiàn)ECDHE算法中的一個(gè)參數(shù)(Server Params)

ECDHE是一種密鑰交換算法

Server Params經(jīng)過(guò)服務(wù)器私鑰簽名

5.Server Hello Done S->C

告知客戶端:協(xié)商部分結(jié)束

目前為止,客戶端和服務(wù)器之間通過(guò)明文共享了

Client Random、Server Random、Server Params

而且,客戶端也已經(jīng)拿到了服務(wù)器的公鑰證書(shū),接下來(lái),客戶端會(huì)驗(yàn)證證書(shū)的真實(shí)有效性

6.Client Key Exchange C->S

用以實(shí)現(xiàn)ECDHE算法中的另一個(gè)參數(shù)(Server Params)

目前為止,客戶端和服務(wù)器都擁有了ECDHE算法需要的2個(gè)參數(shù):Server Params、Client Params

客戶端、服務(wù)器都可以

使用ECDHE算法根據(jù)Server Params、Client Params計(jì)算出一個(gè)新的隨機(jī)密鑰串:Pre-master secret

然后結(jié)合Client Random、Server Random、Pre-master secret生成一個(gè)主密鑰

最后利用主密鑰衍生出其他密鑰:客戶端發(fā)送用的會(huì)話密鑰、服務(wù)器發(fā)送用的會(huì)話密鑰等

7.Change Cipher Spec C->S

告知服務(wù)器,之后的通信采用計(jì)算出來(lái)的會(huì)話密鑰加密

8.Finish C->S

包含連接至今全部報(bào)文的整體校驗(yàn)值(摘要),加密之后發(fā)送給服務(wù)器

這次握手協(xié)商是否成功,要以服務(wù)器是否能夠正確解密該報(bào)文作為判定標(biāo)準(zhǔn)

9.Change Cipher Spec S->C

10.Finish

到此為止,客戶端服務(wù)器都驗(yàn)證加密解密沒(méi)問(wèn)題,握手正式結(jié)束

后面開(kāi)始傳輸加密的HTTP請(qǐng)求和響應(yīng)

TLS通道建立

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容