https原理简述
為什么要使用https?
因?yàn)閔ttp協(xié)議下,數(shù)據(jù)都是明文傳輸?shù)?#xff0c;容易被截獲、修改轉(zhuǎn)發(fā)。
https實(shí)現(xiàn)原理:
概要:通過非對(duì)稱加密進(jìn)行交互協(xié)商獲得對(duì)稱加密算法與密鑰,使用協(xié)商獲得的加密算法與秘鑰對(duì)交互數(shù)據(jù)加密
- 1)瀏覽器將自己支持的一套加密規(guī)則請(qǐng)求服務(wù)器。?
- 2)服務(wù)器從中選出一組加密算法與HASH算法,并將自己的身份信息以證書的形式發(fā)回給瀏覽器。證書里面包含了網(wǎng)站地址,加密公鑰,以及證書的頒發(fā)機(jī)構(gòu)等信息。??
- 3)瀏覽器獲得網(wǎng)站證書之后瀏覽器要做以下工作:?
- ?驗(yàn)證證書的合法性(頒發(fā)證書的機(jī)構(gòu)是否合法,證書中包含的網(wǎng)站地址是否與正在訪問的地址一致等),如果證書受信任,則瀏覽器欄里面會(huì)顯示一個(gè)小鎖頭,否則會(huì)給出證書不受信的提示。??
- ?如果證書受信任,或者是用戶接受了不受信的證書,瀏覽器會(huì)生成一串隨機(jī)數(shù)的密碼,并用證書中提供的公鑰加密。?
- ??使用約定好的HASH算法計(jì)算握手消息,并使用生成的隨機(jī)數(shù)對(duì)消息進(jìn)行加密,最后將之前生成的所有信息請(qǐng)求給服務(wù)器。?
- ??4)服務(wù)器接收瀏覽器發(fā)來的數(shù)據(jù)之后要做以下的操作:
- 使用自己的私鑰將信息解密取出密碼,使用密碼解密瀏覽器發(fā)來的握手消息,并驗(yàn)證HASH是否與瀏覽器發(fā)來的一致。??
- 使用密碼加密一段握手消息,發(fā)送給瀏覽器。?
- ??5)瀏覽器解密并計(jì)算握手消息的HASH,如果與服務(wù)端發(fā)來的HASH一致,此時(shí)握手過程結(jié)束,之后所有的通信數(shù)據(jù)將由之前瀏覽器生成的隨機(jī)密碼并利用對(duì)稱加密算法進(jìn)行加密。
疑問:
為什么最終使用對(duì)稱加密算法加密數(shù)據(jù)?
因?yàn)榉菍?duì)稱加密算法加密數(shù)據(jù)的消耗遠(yuǎn)遠(yuǎn)大于對(duì)稱加密算法
為什么需要ca證書與數(shù)字簽名?
因?yàn)閷?duì)數(shù)據(jù)進(jìn)行加密,客戶端與服務(wù)器之間必須要一個(gè)協(xié)商過程:
使用對(duì)稱加密則要協(xié)商加密算法與密鑰,無法保證協(xié)商的過程的數(shù)據(jù)安全
使用非對(duì)稱加密無法保證公鑰傳遞安全
使用第三方證書為什么可以避免這個(gè)問題?
因?yàn)槭褂玫谌阶C書后,避免了公鑰的傳遞這個(gè)問題。公鑰內(nèi)置在瀏覽器的ca證書列表里。(瀏覽求通過服務(wù)器發(fā)送過來ca證書去匹配瀏覽器內(nèi)置的ca上級(jí)證書獲得公鑰驗(yàn)證簽名)
瀏覽器是如何驗(yàn)證ca證書與數(shù)字簽名?
瀏覽器收到服務(wù)器發(fā)送的證書后,需要驗(yàn)證其真實(shí)性。而證書的簽名是通過簽名算法和上級(jí)CA的私鑰生成的,并非很多文章里簡(jiǎn)單說的靠CA私鑰生成。瀏覽器需要用上級(jí)CA的公鑰才能解密簽名,并與生成的指紋對(duì)比。(上級(jí)CA即頒發(fā)證書的第三方機(jī)構(gòu),上級(jí)CA證書是內(nèi)置于瀏覽器或系統(tǒng))
轉(zhuǎn)載于:https://www.cnblogs.com/dudeyouth/p/10004919.html
總結(jié)
- 上一篇: 一些汇编中的 trick
- 下一篇: 一站式学习Redis 从入门到高可用分布