轉(zhuǎn)載加工自
http://www.reibang.com/p/650ad90bf563
1.客戶端首先將自己支持的加密算法 發(fā)送給服務(wù)器
2.服務(wù)器從客戶端發(fā)來的加密算法中刚梭,挑出一組加密算法和HASH算法望浩,并將自己的身份信息以證書的形式發(fā)回給客戶端惰说。 證書中包含了網(wǎng)站的地址,加密用的公鑰典挑,以及證書的頒發(fā)機(jī)構(gòu)等。
3.客戶端收到服務(wù)器發(fā)來的數(shù)據(jù)包后 會(huì)做一下事情:
- 驗(yàn)證證書是否合法啦吧。一般來說您觉,證書是用來驗(yàn)證站點(diǎn)是否合法的標(biāo)志。如果給證書來自權(quán)威的第三方頒發(fā)和簽名授滓,則說明證書合法琳水。
- 證書合法,或者客戶端接受和信任了不合法的證書般堆,則客戶端就會(huì)隨機(jī)產(chǎn)生一個(gè)串序列號(hào)在孝,使用服務(wù)器發(fā)過來的公鑰進(jìn)行加密。這時(shí)候淮摔,一條返回的消息就基本生成了
- 最后使用服務(wù)器挑選的HASH算法私沮,將剛才的消息是用剛才的隨機(jī)數(shù)進(jìn)行加密和橙,生成相應(yīng)的消息校驗(yàn)值仔燕,與剛才的消息一同發(fā)給服務(wù)器造垛。
4.服務(wù)器接收到客戶端發(fā)來的消息后,會(huì)做這么幾件事情:
- 使用私鑰解密上面2)中公鑰的加密信息晰搀,得到客戶端產(chǎn)生的隨機(jī)序列號(hào)五辽。
- 使用該隨機(jī)序列號(hào),對(duì)該消息進(jìn)行加密外恕,驗(yàn)證得到的校驗(yàn)值是否與客戶端發(fā)來的一致奔脐。如果一致說明消息未被篡改,可以信任吁讨。
- 最后髓迎,使用該隨機(jī)序列號(hào),加上之前第2)步種選擇的加密算法建丧,加密一段 握手消息排龄,發(fā)給客戶端,同時(shí)HASH值也帶上翎朱。
5.客戶端收到服務(wù)器端的消息后橄维,接著做這么幾件事
- 計(jì)算HASH值是否與發(fā)回的消息一致
- 檢查消息是否為握手消息
6.握手結(jié)束后,客戶端與服務(wù)器端使用握手階段產(chǎn)生的隨機(jī)數(shù)以及挑選出來的算法進(jìn)行對(duì)稱加解密的傳輸拴曲。
R2UHELQ}VLI~6Y7P30TR`~S.jpg
好了我們大概已經(jīng)知道了HTTPS是如何加密的了争舞,那么這個(gè)相互認(rèn)證過程是怎么樣的呢 ?
在網(wǎng)上看到了這篇博客澈灼,http://blog.csdn.net/yuwuchaio/article/details/50469183 把他描述的剪切下來了
FB6F84F5-0C42-42ED-873D-164C040B7AB8.png
注意黃色的部分竞川,這個(gè)指明了,我們平時(shí)使用的一個(gè)場景叁熔。這篇文章會(huì)很長委乌,不僅僅是為了解釋HTTPS,還為了能夠增加記憶荣回,當(dāng)日后想看看的時(shí)候遭贸,就能通過讀這邊文章想起大部分的HTTPS的知識(shí)。下邊解釋一些更加詳細(xì)的HTTPS過程心软。
Paste_Image.png
9A971961-31D6-404F-B244-CE4BF3C9C75E.png