瀏覽器如何驗證HTTPS證書的合法性?

2022-04-28 21:33:14 字數 2007 閱讀 7804

一 前提:

1. 證書存在的目的就是避免中間人攻擊,避免發生經典的傳令兵問題。

2. 證書都是由ca組織下認可的根證書root簽發的(其中有兩種形式,第一種是該組織有乙個root,每一家的root ca都需要其簽名,該方案基於利益考量幾乎沒人採用,而是第二種方案,每家都有自己的root ca 可以自簽或者互相簽名)。這個組織很難進,目前幾乎完全由歐美控制,每年都有輪值主席負責該年ca組織工作,主要涉及到新的rfc審核和修改,新的ca申請和已有ca日誌審核以及提出新的ca方案等。其他不通過該組織認證的證書簽發者都是不安全的,此外該組織會對每年每個ca簽發的證書進行審核。因此可以保證正常途徑簽發的證書根是絕對可信的。所有改組織通過的ca會強迫瀏覽器和系統安裝(常見的廠商有verisign, microsoft, oracle和molliza 這也是強制力的**)

3. 證書分為dv(digital verification),ov(organization verification)和ev(extended verification),其中ev證書最貴,可以在瀏覽器中看到綠色的就是ev證書。證書從申請到批准要走很久的流程,需要提供很多的公司認證資訊和個人資訊,否則是不會通過的。因此可以保證簽發的證書內容是可信的。

4. 證書是需要預裝的,特別是根證書。ie和chrome是通過內建在windows系統中的truststore來管理根證書(當然自己也可以手動匯入自簽證書,瀏覽不會認可的因為有ocsp和crl--之後細講);而firefox則是內建在自己的瀏覽中。

5. 綜上,通俗的來說乙個ca如果要商業化,要做以下幾步:申**入ca組織,然後向microsoft提申**入truststore(通過windows自我更新或者通過其他證書匯入時加入)和mozilla組織申**入firefox truststore。

二 證書工作原理

以訪問舉例。1. 瀏覽器發現此為https請求,握手拿到google的證書,先從系統(windows)或者瀏覽器內建(firefox)檢查證書鏈是否正確。

【補充】簡略步驟如下

a. 客戶端傳送資訊,帶上支援的ssl或者tls版本(注意不同瀏覽器版本支援不同)

b. 伺服器返回確認使用的加密通訊協議版本以及加密隨機數和證書

c. 瀏覽器驗證證書 -> ocsp或者crl 結合自帶truststore

注意此處驗證分為雙向驗證和單向驗證,單向驗證客戶瀏覽器即可完成,即客戶端truststore存放伺服器public證書;雙向驗證客戶瀏覽器需要帶客戶端證書到伺服器端由伺服器端驗證,客戶端truststore存放伺服器端public證書,keystore存放自身private證書,伺服器端truststore存放客戶端public證書,keystore存放自身private證書。

2. 如果驗證失敗則會攔截(edge瀏覽器)

注意:ca不會直接暴露到外網的,如果需要訪問ca伺服器需要使用硬體token並且多人在場錄影,且只能遠端訪問。ocsp相當於證書資料庫的備份而已是直接暴露在外網的可以通過http或者https訪問

4. 如果發現證書並沒有被吊銷或者過期則瀏覽器對ev證書會顯示為綠色,對ov證書則是通過放行。否則彈出通知---該**不可信(不同瀏覽器不同--edge瀏覽器)

三 證書存在的問題

1. ca錯簽證書,最近比較經典的就是google被其他ca亂籤了證書,這在ca界是很恐怖的一件事。谷歌是怎麼發現的呢? 這就要提到chrome採用了不同的ca管理機制叫做ct log,每個ca在簽證書前都要先把證書post到谷歌ca伺服器去備份,這個谷歌就能知道自己的網域名稱是不是被亂籤了。

2. 依然有可能發生中間人攻擊,比如使用真實ca簽發的證書(要求證書鏈完整,即該軟體必須有認證過的ca)替換掉要訪問的**的證書(需要攔截底層請求),模擬瀏覽器去驗證ocsp等

**:參考:

瀏覽器證書備份

備份瀏覽器證書 開啟ie瀏覽器的 工具 選擇 internet選項 選擇 內容 選項卡,點選 證書 按鈕。開啟證書管理器視窗 在證書列表中,根據您的客戶號找到對應的證書。例如,我的客戶號是06000000058,在列表中找到自己的證書,號碼是06000000058.0000.0000。選中該證書,然...

HTTPS 瀏覽器驗證目標伺服器是否合法

1.目標伺服器的host 公鑰進行hash,然後用證書機構給的私鑰進行簽名。2.將host 公鑰 簽名打包 三個加起來就是證書 發給訪問者。3.瀏覽器拿到證書後將host 公鑰也做一次hash。4.瀏覽器拿本地目標伺服器的根證書 證書機構在系統構建時就儲存的一系列位址證書 的公鑰對簽名進行解密獲取h...

Jmeter 錄製瀏覽器https請求

jmeter錄製指令碼時,跟http指令碼錄製主要區別是,https錄製需要新增安全證書。一jmeter 伺服器及證書配置。1 開啟jmeter,右鍵測試計畫新增執行緒組,右鍵工作台 非測試元件 http 伺服器 2 設定http 伺服器。埠預設8888,為了避免跟本地fiddler衝突,改成了80...