引子
先說說我對架構師的理解,從業務能力上,需要的是發現問題和解決問題的能力;從團隊建設上,需要的是能培養團隊的業務能力;從專案管理上,把控好整個專案和軟體產品的全生命周期,
我搜索了一下架構師的培訓課程,講什么的也有,實際上是Java從入門到精通的課也冠名架構師課程;講持久層框架的也冠名架構師課程;講組件、中間件的也冠名架構師課程;講分布式系統設計的也冠名架構師課程,個人意見哈,內容其實沒有什么問題,但是課程開始之前至少讓大家有個整體的視圖:

熟悉https等常用技術的底層原理,可以增強解決實際問題的能力,作出正確的決策,舉個例子:
接到安全團隊的指令,要求各個團隊梳理域名是否存在證書將要到期的安全風險,怎么來給團隊下發具體任務呢?這個問題在文章最后總結并回答,
簡單入門
先來回答下面兩個問題:
1、大家都知道使用https協議傳輸默認使用443埠,那什么情況下必須使用443,什么情況下不使用443?
大家想一下埠的本質是什么,其實埠有兩種,一種是物理埠,比如集線器、路由器的埠,大學的時候記得有門課叫集成電路,里面有講到過,另一種是邏輯埠,是TCP/IP協議的埠,也常叫網路埠,本質上一個埠是用來系結服務的,那服務器用監聽什么埠,客戶端就要向哪個埠發起請求,我們自己也可以寫個簡單的例子,寫過這個例子應該很容易就能明白,《懂了!國際演算法體系對稱演算法DES原理》也有完整的例子,
簡單點說服務端可以自己決定什么埠提供服務,但是呢,大家各自為政,記憶起來麻煩也不便于埠管理,所以邏輯埠也進行了劃分,其中0~1023是公認埠,比如80就默認是http的埠、443就是https的埠,這樣約定好了,就不需要特殊來記了,所以一些對全人類開發的公網網站,就是用的默認埠,但是你自己或者公司內部用的或者和合作方商量好的,也可以用其他埠,只要服務提供方認就行,
2、使用443的埠的同時,80埠還會用嗎?
這就是涉及到https的本質了,https本質是http協議上加了一個安全層,安全層做了一些處理,http要做的事情一點也沒有減少,就相當于在藥粒外加了一層膠囊,本質上起作用的還是藥粒呀;快遞送來的海鮮放在保鮮箱里還加了保鮮袋本質還是買的海鮮呀,所以當然要用啦,

安全層原理
既然https協議本質只是http上加了安全層,本文就主要將安全層是怎么實作的,當然要靠加密,加密又分成對稱加密和非對稱加密,要使用對稱加密,客戶端和服務端要有一個相同的秘鑰,這個秘鑰怎么能安全的傳輸就成了問題,非對稱加密是公鑰只能用來加密,私鑰只能用來解密,那服務端自己存私鑰,客戶端來請求的時候,服務端把公鑰發給它就可以了,
那有的朋友就問了,那別的客戶端來請求是不是也拿到的是同一個公鑰呀,資訊就不安全了呀,沒錯,同一個服務端給所有的客戶端回傳的是相同的公鑰,但是威脅網路安全的黑客需要是截獲資訊,不是公鑰,資訊發送方用公鑰把資訊加密了,黑客沒有私鑰解不開,他能拿到公鑰和密文,想解開那就只能暴力破解,把所有語言文字的組合用公鑰試一下看看和截獲到的密文是不是一樣的,如果用常用的RSA2048的話,要80年,
總之,非對稱加密是比較安全的,但是它慢,通常加解密速度是對稱加密的幾百倍,資訊大了速度還會快速下降,所以https協議是用非對稱加密溝通一個對稱秘鑰,真正的資訊就用對稱秘鑰來加解密了,
CA證書
很多人都聽過網路抓包吧,抓包的原理和黑客截獲資訊差不多,都是自己作為一個代理,客戶端B想訪問C網站,黑客D發現了,D就偽裝成了C把自己的公鑰發給了B,B發請求“我是B,我的提貨卡號碼是XBXB”到網站C時,黑客D截獲了這個資訊,用自己的私鑰解開,之后把資料篡改成“我是D,我的提貨卡號碼是XBXB”發給網站C,于是本來B的東西就被D領走了,抓包也是這種充當代理的原理,
為了防止這一問題,客戶端就需要在收到公鑰的時候做一下判斷,信任的公鑰才使用,于是出現了一些大家都很認可的組織,它們可以頒發公鑰,
打個比方,在唐朝,賀知章賀老可謂是少有的文壇官場雙得意的代表,“二月春風”沒少光顧他家,從7品官做到3品大員,是皇帝的老鐵,為國服務50年后退休皇帝了還送豪宅,后來還被追封禮部尚書,《長安十二時辰》里那個80多的老頭何監就是影射的賀知章,因為他退休前的官職就是監事,人稱賀監,不少詩壇大家就是受了他的推薦才與皇帝建立了通信成為了公務員,所以,賀監還有一個身份是“大唐最佳星探”,
這里賀監就是大家都認可的組織,在賀監80多歲的時候,40多歲的李白找到賀監,請求他給自己簽發一份公鑰,賀監就用自己的私鑰給他做了簽發寫了推薦信,不僅如此,還金龜換酒傳為佳話,皇帝想選公務員,李白拿出了賀監的推薦信,皇帝一看,確實是賀監的筆跡,馬上就給李白封了公務員,

這里提一下,很多時候https抓包可以成功,原理是客戶端很多時候并不驗證證書的合法性,有個選項check=false,那至于哪些是認證機構,這個是系統預裝的,可以在IE瀏覽器的internet選項里查到預裝的證書,在中國,很多金融機構,它們的認證機構是央行,這些證書都是有有效期的,有的三年一簽發、有的五年一簽發,
上面圖中有顯示,證書除了公鑰資訊,還有數字簽名資訊,數字簽名當然需要有資訊來進行簽名,具體資訊就是我們在生成密鑰時需要輸入的那些,如下圖:

總結
回答開頭的問題:
接到安全團隊的指令,要求各個團隊梳理域名是否存在證書將要到期的安全風險,怎么來給團隊下發具體任務呢?
1、要梳理的是提供https服務的服務端,只有服務端才會需要找認證機構簽發證書
2、只有需要外部認證的證書有過期的概念,自己簽發的可以更新也可以不更新,可以通過向服務端發請求的獲取到證書,查看證書是誰簽發的、有效期是哪天
架構師經常面臨著需要做出正確的決策,比如連續幾天團隊都在執行生產程式發布,但是后面幾天大家有紀律渙散的趨勢,這時候應該敏銳的察覺到并及時指出并糾正,這些都需要對原理或者事情的走向有深刻的認知才能做出正確和及時的判斷,
推薦閱讀
一個請求過來都經過了什么
兩個流程鏈路問題的排查和總結
穩定性三十六計-超時處理
漫畫:大公司都在重復造輪子嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/340414.html
標籤:架構設計
上一篇:如何在Python/pandas中系結(連接)3個資料幀
下一篇:如何使串列具有特定大小(k)
