突然間有點(diǎn)忘了https中的交互過(guò)程了算撮,年紀(jì)大了生宛,總是容易忘記。肮柜。陷舅。
https握手過(guò)程
- 客戶(hù)端發(fā)起HTTPS請(qǐng)求
- 服務(wù)端傳送配置的證書(shū):證書(shū)的本質(zhì)就是服務(wù)器自己的公鑰,只是包含了很多信息审洞,如證書(shū)的頒發(fā)機(jī)構(gòu)莱睁,過(guò)期時(shí)間等等,該公鑰的目的是為了和服務(wù)器端之間協(xié)商對(duì)稱(chēng)秘鑰對(duì)使用芒澜,證書(shū)可以自己生成仰剿,但是自己生成的證書(shū)如果是通過(guò)瀏覽器來(lái)請(qǐng)求,各個(gè)瀏覽器是不會(huì)認(rèn)的痴晦,所以需要向官方的CA機(jī)構(gòu)申請(qǐng)一個(gè)合法的證書(shū)南吮,其實(shí)就是提供一個(gè)公鑰以及申請(qǐng)者信息給機(jī)構(gòu),機(jī)構(gòu)會(huì)生成一個(gè)合法證書(shū)誊酌,這個(gè)證書(shū)包含了一個(gè)機(jī)構(gòu)生成的簽名部凑;
- 客戶(hù)端解析驗(yàn)證證書(shū)合法性:客戶(hù)端的TLS來(lái)完成,首先會(huì)驗(yàn)證公鑰是否有效碧浊,比如頒發(fā)機(jī)構(gòu)涂邀,過(guò)期時(shí)間等等,如果發(fā)現(xiàn)異常箱锐,則會(huì)彈出一個(gè)警告框比勉,提示證書(shū)存在問(wèn)題。比如瀏覽器會(huì)持有一些較著名的公認(rèn)的機(jī)構(gòu)的公鑰驹止,利用這個(gè)公鑰可以去驗(yàn)證服務(wù)器下發(fā)證書(shū)里邊簽名的正確性敷搪,這樣來(lái)完成證書(shū)的驗(yàn)證。如果證書(shū)沒(méi)有問(wèn)題幢哨,那么就生成一個(gè)隨機(jī)值。然后用證書(shū)對(duì)該隨機(jī)值進(jìn)行加密嫂便。
- 協(xié)商數(shù)據(jù)傳輸密鑰:這部分傳送的是用證書(shū)加密后的隨機(jī)值捞镰,目的就是讓服務(wù)端得到這個(gè)隨機(jī)值,以后客戶(hù)端和服務(wù)端的通信就可以通過(guò)這個(gè)隨機(jī)值來(lái)進(jìn)行加密解密了毙替。服務(wù)器與客戶(hù)端之間的數(shù)據(jù)傳輸過(guò)程是采用對(duì)稱(chēng)加密方式加密的岸售。
- 正常的加密數(shù)據(jù)交互