自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一文讀懂 https 底層原理

開發(fā) 架構(gòu)
既然https協(xié)議本質(zhì)只是http上加了安全層,本文就主要將安全層是怎么實(shí)現(xiàn)的。當(dāng)然要靠加密。加密又分成對(duì)稱加密和非對(duì)稱加密。

 [[440819]]

引子

先說說我對(duì)架構(gòu)師的理解。從業(yè)務(wù)能力上,需要的是發(fā)現(xiàn)問題和解決問題的能力;從團(tuán)隊(duì)建設(shè)上,需要的是能培養(yǎng)團(tuán)隊(duì)的業(yè)務(wù)能力;從項(xiàng)目管理上,把控好整個(gè)項(xiàng)目和軟件產(chǎn)品的全生命周期。

我搜索了一下架構(gòu)師的培訓(xùn)課程,講什么的也有。實(shí)際上是Java從入門到精通的課也冠名架構(gòu)師課程;講持久層框架的也冠名架構(gòu)師課程;講組件、中間件的也冠名架構(gòu)師課程;講分布式系統(tǒng)設(shè)計(jì)的也冠名架構(gòu)師課程。個(gè)人意見哈,內(nèi)容其實(shí)沒有什么問題,但是課程開始之前至少讓大家有個(gè)整體的視圖:

熟悉https等常用技術(shù)的底層原理,可以增強(qiáng)解決實(shí)際問題的能力,作出正確的決策。舉個(gè)例子:

接到安全團(tuán)隊(duì)的指令,要求各個(gè)團(tuán)隊(duì)梳理域名是否存在證書將要到期的安全風(fēng)險(xiǎn)。怎么來(lái)給團(tuán)隊(duì)下發(fā)具體任務(wù)呢?這個(gè)問題在文章最后總結(jié)并回答。

簡(jiǎn)單入門

先來(lái)回答下面兩個(gè)問題:

1、大家都知道使用https協(xié)議傳輸默認(rèn)使用443端口,那什么情況下必須使用443,什么情況下不使用443?

大家想一下端口的本質(zhì)是什么。其實(shí)端口有兩種,一種是物理端口,比如集線器、路由器的端口。大學(xué)的時(shí)候記得有門課叫集成電路,里面有講到過。另一種是邏輯端口,是TCP/IP協(xié)議的端口,也常叫網(wǎng)絡(luò)端口。本質(zhì)上一個(gè)端口是用來(lái)綁定服務(wù)的,那服務(wù)器用監(jiān)聽什么端口,客戶端就要向哪個(gè)端口發(fā)起請(qǐng)求。我們自己也可以寫個(gè)簡(jiǎn)單的例子,寫過這個(gè)例子應(yīng)該很容易就能明白。

簡(jiǎn)單點(diǎn)說服務(wù)端可以自己決定什么端口提供服務(wù)。但是呢,大家各自為政,記憶起來(lái)麻煩也不便于端口管理。所以邏輯端口也進(jìn)行了劃分。其中0~1023是公認(rèn)端口,比如80就默認(rèn)是http的端口、443就是https的端口。這樣約定好了,就不需要特殊來(lái)記了。所以一些對(duì)全人類開發(fā)的公網(wǎng)網(wǎng)站,就是用的默認(rèn)端口。但是你自己或者公司內(nèi)部用的或者和合作方商量好的,也可以用其他端口,只要服務(wù)提供方認(rèn)就行。

2、使用443的端口的同時(shí),80端口還會(huì)用嗎?

這就是涉及到https的本質(zhì)了。https本質(zhì)是http協(xié)議上加了一個(gè)安全層。安全層做了一些處理,http要做的事情一點(diǎn)也沒有減少。就相當(dāng)于在藥粒外加了一層膠囊,本質(zhì)上起作用的還是藥粒呀;快遞送來(lái)的海鮮放在保鮮箱里還加了保鮮袋本質(zhì)還是買的海鮮呀。所以當(dāng)然要用啦。

 

安全層原理

既然https協(xié)議本質(zhì)只是http上加了安全層,本文就主要將安全層是怎么實(shí)現(xiàn)的。當(dāng)然要靠加密。加密又分成對(duì)稱加密和非對(duì)稱加密。要使用對(duì)稱加密,客戶端和服務(wù)端要有一個(gè)相同的秘鑰,這個(gè)秘鑰怎么能安全的傳輸就成了問題。非對(duì)稱加密是公鑰只能用來(lái)加密,私鑰只能用來(lái)解密。那服務(wù)端自己存私鑰,客戶端來(lái)請(qǐng)求的時(shí)候,服務(wù)端把公鑰發(fā)給它就可以了。

那有的朋友就問了,那別的客戶端來(lái)請(qǐng)求是不是也拿到的是同一個(gè)公鑰呀,信息就不安全了呀。沒錯(cuò),同一個(gè)服務(wù)端給所有的客戶端返回的是相同的公鑰。但是威脅網(wǎng)絡(luò)安全的黑客需要是截獲信息,不是公鑰。信息發(fā)送方用公鑰把信息加密了,黑客沒有私鑰解不開。他能拿到公鑰和密文,想解開那就只能暴力破解,把所有語(yǔ)言文字的組合用公鑰試一下看看和截獲到的密文是不是一樣的。如果用常用的RSA2048的話,要80年。

總之,非對(duì)稱加密是比較安全的,但是它慢。通常加解密速度是對(duì)稱加密的幾百倍,信息大了速度還會(huì)快速下降。所以https協(xié)議是用非對(duì)稱加密溝通一個(gè)對(duì)稱秘鑰。真正的信息就用對(duì)稱秘鑰來(lái)加解密了。

CA證書

很多人都聽過網(wǎng)絡(luò)抓包吧。抓包的原理和黑客截獲信息差不多,都是自己作為一個(gè)代理??蛻舳薆想訪問C網(wǎng)站,黑客D發(fā)現(xiàn)了。D就偽裝成了C把自己的公鑰發(fā)給了B。B發(fā)請(qǐng)求“我是B,我的提貨卡號(hào)碼是XBXB”到網(wǎng)站C時(shí),黑客D截獲了這個(gè)信息,用自己的私鑰解開,之后把數(shù)據(jù)篡改成“我是D,我的提貨卡號(hào)碼是XBXB”發(fā)給網(wǎng)站C。于是本來(lái)B的東西就被D領(lǐng)走了。抓包也是這種充當(dāng)代理的原理。

為了防止這一問題??蛻舳司托枰谑盏焦€的時(shí)候做一下判斷,信任的公鑰才使用。于是出現(xiàn)了一些大家都很認(rèn)可的組織,它們可以頒發(fā)公鑰。

打個(gè)比方,在唐朝,賀知章賀老可謂是少有的文壇官場(chǎng)雙得意的代表,“二月春風(fēng)”沒少光顧他家。從7品官做到3品大員,是皇帝的老鐵,為國(guó)服務(wù)50年后退休皇帝了還送豪宅,后來(lái)還被追封禮部尚書?!堕L(zhǎng)安十二時(shí)辰》里那個(gè)80多的老頭何監(jiān)就是影射的賀知章,因?yàn)樗诵萸暗墓俾毦褪潜O(jiān)事,人稱賀監(jiān)。不少詩(shī)壇大家就是受了他的推薦才與皇帝建立了通信成為了公務(wù)員。所以,賀監(jiān)還有一個(gè)身份是“大唐最佳星探”。

這里賀監(jiān)就是大家都認(rèn)可的組織,在賀監(jiān)80多歲的時(shí)候,40多歲的李白找到賀監(jiān),請(qǐng)求他給自己簽發(fā)一份公鑰。賀監(jiān)就用自己的私鑰給他做了簽發(fā)寫了推薦信,不僅如此,還金龜換酒傳為佳話?;实巯脒x公務(wù)員,李白拿出了賀監(jiān)的推薦信?;实垡豢?,確實(shí)是賀監(jiān)的筆跡,馬上就給李白封了公務(wù)員。

這里提一下,很多時(shí)候https抓包可以成功,原理是客戶端很多時(shí)候并不驗(yàn)證證書的合法性。有個(gè)選項(xiàng)check=false。那至于哪些是認(rèn)證機(jī)構(gòu),這個(gè)是系統(tǒng)預(yù)裝的??梢栽贗E瀏覽器的internet選項(xiàng)里查到預(yù)裝的證書。在中國(guó),很多金融機(jī)構(gòu),它們的認(rèn)證機(jī)構(gòu)是央行。這些證書都是有有效期的,有的三年一簽發(fā)、有的五年一簽發(fā)。

上面圖中有顯示,證書除了公鑰信息,還有數(shù)字簽名信息。數(shù)字簽名當(dāng)然需要有信息來(lái)進(jìn)行簽名,具體信息就是我們?cè)谏擅荑€時(shí)需要輸入的那些,如下圖:

總結(jié)

回答開頭的問題:

接到安全團(tuán)隊(duì)的指令,要求各個(gè)團(tuán)隊(duì)梳理域名是否存在證書將要到期的安全風(fēng)險(xiǎn)。怎么來(lái)給團(tuán)隊(duì)下發(fā)具體任務(wù)呢?

1、要梳理的是提供https服務(wù)的服務(wù)端,只有服務(wù)端才會(huì)需要找認(rèn)證機(jī)構(gòu)簽發(fā)證書

2、只有需要外部認(rèn)證的證書有過期的概念,自己簽發(fā)的可以更新也可以不更新。可以通過向服務(wù)端發(fā)請(qǐng)求的獲取到證書,查看證書是誰(shuí)簽發(fā)的、有效期是哪天

架構(gòu)師經(jīng)常面臨著需要做出正確的決策,比如連續(xù)幾天團(tuán)隊(duì)都在執(zhí)行生產(chǎn)程序發(fā)布,但是后面幾天大家有紀(jì)律渙散的趨勢(shì),這時(shí)候應(yīng)該敏銳的察覺到并及時(shí)指出并糾正。這些都需要對(duì)原理或者事情的走向有深刻的認(rèn)知才能做出正確和及時(shí)的判斷。 

 

責(zé)任編輯:龐桂玉 來(lái)源: Java知音
相關(guān)推薦

2024-09-03 08:40:31

2023-01-09 08:14:08

GoHttpServer

2022-05-12 10:53:42

keepalivevrrp協(xié)議

2021-10-15 14:28:30

React 組件渲染

2021-10-20 07:18:51

Linux延時(shí)隊(duì)列

2023-12-22 19:59:15

2021-08-04 16:06:45

DataOps智領(lǐng)云

2021-04-30 19:53:53

HugePages大內(nèi)存頁(yè)物理

2021-02-26 05:24:35

Java垃圾回收

2025-04-30 09:12:35

2024-04-10 10:34:34

Cache系統(tǒng)GPU

2018-09-28 14:06:25

前端緩存后端

2022-09-22 09:00:46

CSS單位

2025-04-03 10:56:47

2022-11-06 21:14:02

數(shù)據(jù)驅(qū)動(dòng)架構(gòu)數(shù)據(jù)

2024-02-23 10:10:00

List接口Java

2020-05-14 14:52:05

HDFS數(shù)據(jù)集架構(gòu)

2022-04-10 10:57:06

eBPFJIT即時(shí)編譯

2020-05-20 22:37:42

HTTPSSSL雙向驗(yàn)證

2023-05-20 17:58:31

低代碼軟件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)