關(guān)于https - 2024-07-01

1、什么是https?什么是https證書(shū)?什么是TLS?
答:HTTPS是一種通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行安全通信的傳輸協(xié)議,經(jīng)由HTTP進(jìn)行通信,利用SSL/TLS建立全信道,加密數(shù)據(jù)包。HTTPS使用的主要目的是提供對(duì)網(wǎng)站服務(wù)器的身份認(rèn)證,同時(shí)保護(hù)交換數(shù)據(jù)的隱私與完整性。
答:HTTPS證書(shū),又稱(chēng)SSL證書(shū),是一種數(shù)字證書(shū)。由CA(Certificate Authority證書(shū)頒發(fā)機(jī)構(gòu))頒發(fā)。
答:TLS是傳輸層加密協(xié)議。

2、根CA從哪里來(lái)?
答:每個(gè)瀏覽器都有根證書(shū)庫(kù),所以大多數(shù)操作系統(tǒng)的根CA證書(shū)是默認(rèn)安裝的。

  1. 為什么需要CA機(jī)構(gòu)頒發(fā)證書(shū)?
    答:防止”中間人“攻擊,同時(shí)可以為網(wǎng)站提供身份證明。

4、數(shù)字證書(shū)是如何生成的?
答:先hash再加密。網(wǎng)站把自己的公鑰和其他信息提供給CA,CA會(huì)對(duì)這些信息和公鑰進(jìn)行哈希運(yùn)算得到一串更短的字符(提高加解密速度,非對(duì)稱(chēng)加密效率較差),然后用CA自己的私鑰對(duì)這串哈希字符進(jìn)行加密,就得到“數(shù)字簽名”了。
所以雖然“數(shù)字證書(shū)”的網(wǎng)站信息都是明文的,但是核心就在于CA的“數(shù)字簽名”了。因?yàn)榧用艿乃借€只有CA知道。

5、瀏覽器如何保證網(wǎng)站發(fā)來(lái)的數(shù)字證書(shū)的合法性?
答:
a、公鑰驗(yàn)簽。用CA公鑰給“數(shù)字證書(shū)”里的“數(shù)字簽名”進(jìn)行解密,得到一串哈希字符。
然后對(duì)“數(shù)字證書(shū)”的內(nèi)容進(jìn)行同樣的哈希運(yùn)算,也得到一串哈希字符。
然后比較兩串哈希字符串是否一致。如果一致,說(shuō)明“數(shù)字證書(shū)”是靠譜的,沒(méi)有被篡改。
b、域名對(duì)比。瀏覽器還會(huì)對(duì)比證書(shū)里的“主題背景”的CN公用名,或者“擴(kuò)展程序”里的“證書(shū)主題背景的備用名稱(chēng)”,是否和域名一致,一致那就證明這份證書(shū)是該網(wǎng)站的。
c、有效期檢查。瀏覽器還會(huì)檢查證書(shū)的有效期是否過(guò)期。

以上第3點(diǎn)和第4點(diǎn),就是典型的 CA私鑰簽名,公鑰驗(yàn)簽。

6、https用的是對(duì)稱(chēng)加密還是非對(duì)稱(chēng)加密?
答:HTTPS 在內(nèi)容傳輸?shù)募用苌鲜褂玫氖菍?duì)稱(chēng)加密,非對(duì)稱(chēng)加密只作用在證書(shū)驗(yàn)證階段。

7、為什么數(shù)據(jù)傳輸是用對(duì)稱(chēng)加密的?
第一:非對(duì)稱(chēng)加密的加解密效率是非常低的,而 http 的應(yīng)用場(chǎng)景中通常端與端之間存在大量的交互,非對(duì)稱(chēng)加密的效率是無(wú)法接受的。
第二:在 HTTPS 的場(chǎng)景中只有服務(wù)端保存了私鑰,一對(duì)公私鑰只能實(shí)現(xiàn)單向的加解密,所以HTTPS 中內(nèi)容傳輸加密采取的是對(duì)稱(chēng)加密,而不是非對(duì)稱(chēng)加密。

8、 使用https會(huì)被抓包嗎?
答:會(huì)被抓包,HTTPS 只防止用戶(hù)在不知情的情況下通信被監(jiān)聽(tīng),如果用戶(hù)主動(dòng)授信,是可以構(gòu)建“中間人”網(wǎng)絡(luò),代理軟件可以對(duì)傳輸內(nèi)容進(jìn)行解密。

9、HTTPS必須在每次請(qǐng)求中都要先在SSL/TLS層進(jìn)行握手傳輸密鑰嗎?
答:顯然每次請(qǐng)求都經(jīng)歷一次密鑰傳輸過(guò)程非常耗時(shí),那怎么達(dá)到只傳輸一次呢?靠“session”。
服務(wù)器會(huì)為每個(gè)瀏覽器(或客戶(hù)端軟件)維護(hù)一個(gè)session ID,在TSL握手階段傳給瀏覽器,瀏覽器生成好密鑰傳給服務(wù)器后,服務(wù)器會(huì)把該密鑰存到相應(yīng)的session ID下,之后瀏覽器每次請(qǐng)求都會(huì)攜帶session ID,服務(wù)器會(huì)根據(jù)session ID找到相應(yīng)的密鑰并進(jìn)行解密加密操作,這樣就不必要每次重新制作、傳輸密鑰了!

10、https加密方案/原理 總結(jié):


image.png

① 證書(shū)驗(yàn)證階段:
1)瀏覽器發(fā)起 HTTPS 請(qǐng)求;
2)服務(wù)端返回 HTTPS 證書(shū);
3)客戶(hù)端驗(yàn)證證書(shū)是否合法,如果不合法則提示告警。

② 數(shù)據(jù)傳輸階段:
1)當(dāng)證書(shū)驗(yàn)證合法后,在本地生成隨機(jī)數(shù);
2)通過(guò)公鑰加密隨機(jī)數(shù),并把加密后的隨機(jī)數(shù)傳輸?shù)椒?wù)端;
3)服務(wù)端通過(guò)私鑰對(duì)隨機(jī)數(shù)進(jìn)行解密;
4)服務(wù)端通過(guò)客戶(hù)端傳入的隨機(jī)數(shù)構(gòu)造對(duì)稱(chēng)加密算法,對(duì)返回結(jié)果內(nèi)容進(jìn)行加密后傳輸。

最后編輯于
?著作權(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)容

  • 作者:Java3y 本文力求簡(jiǎn)單講清每個(gè)知識(shí)點(diǎn),希望大家看完能有所收獲 一、HTTP協(xié)議的今生來(lái)世 最近在看博客的...
    吳小博Toby閱讀 1,246評(píng)論 0 0
  • 本文將分兩個(gè)專(zhuān)題去理解HTTPS。 專(zhuān)題一:HTTPS為什么安全 1、http為什么不安全? http協(xié)議屬于明文...
    kaitoulee閱讀 5,420評(píng)論 11 82
  • 首先來(lái)看一種場(chǎng)景:小紅發(fā)信息約小明放學(xué)后去電影。 正常的信息流動(dòng)是這樣的: 1.小紅 -> 放學(xué)后去看電影吧? -...
    rushjs閱讀 7,659評(píng)論 12 35
  • 從http看https的誕生緣由 本文重點(diǎn)不在于http,所有對(duì)http的原理和過(guò)程不做過(guò)多仔細(xì)的說(shuō)明。我們熟悉的...
    Swy2w閱讀 489評(píng)論 0 1
  • 一 HTTPS是什么 1、HttpsHttps并不是一個(gè)單獨(dú)的協(xié)議,而是對(duì)工作在常規(guī)Http協(xié)議上的連接進(jìn)行了一層...
    一枝妖孽閱讀 1,350評(píng)論 0 0

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