作的:

萬碼學(xué)堂,電腦培訓(xùn),計算機培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

后來網(wǎng)景公司開發(fā)了SSL(Secure Sockets Layer)技術(shù),然后它就變成了這樣的HTTP,也就是HTTPS了:

萬碼學(xué)堂,電腦培訓(xùn),計算機培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

后來爆發(fā)了與IE的世紀(jì)大戰(zhàn),網(wǎng)景敗北,SSL移交給了IETF(Internat Engineering Task Force)互聯(lián)網(wǎng)工程任務(wù)組,標(biāo)準(zhǔn)化之后變成了現(xiàn)在的TLS,現(xiàn)在一般會把它們兩個放在一起稱為SSL/TLS。本篇并不關(guān)注SSL/TLS具體是如何工作的,只是抽象的解釋下HTTPS的一個工作流程。

2. HTTPS 工作流程

萬碼學(xué)堂,電腦培訓(xùn),計算機培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

  1. Client發(fā)起一個HTTPS(https:/demo.linianhui.dev)的請求,根據(jù)RFC2818的規(guī)定,Client知道需要連接Server的443(默認(rèn))端口。

  2. Server把事先配置好的公鑰證書public key certificate)返回給客戶端。

  3. Client驗證公鑰證書:比如是否在有效期內(nèi),證書的用途是不是匹配Client請求的站點,是不是在CRL吊銷列表里面,它的上一級證書是否有效,這是一個遞歸的過程,直到驗證到根證書(操作系統(tǒng)內(nèi)置的Root證書或者Client內(nèi)置的Root證書)。如果驗證通過則繼續(xù),不通過則顯示警告信息。

  4. Client使用偽隨機數(shù)生成器生成加密所使用的