https 協議的安全依賴於它的證書機制,如果攻擊者申請到了一張和你的**一摸一樣的證書,那你**的安全機制也就不復存在了。本文來聊一聊,如何預防 https 證書偽造。
證書劫持
如果想部署 https **,首先向 ca 機構申請一張證書, ca 機構在審核申請者的身份後,會簽發一張證書,證書中包含了申請者**的主機名、主機公鑰,同時 ca 機構會用自己的私鑰對整個證書進行簽名,並將簽名新增到證書檔案中,然後傳送給證書申請者。證書是 tls 協議中非常關鍵的一環,其主要作用:
向**訪問者確認伺服器的真實身份,確保客戶端(瀏覽器)是和真正的**提供者在通訊,避免遇到中間人攻擊,實現密碼學中的身份認證特性。
客戶端和伺服器使用證書中的公鑰(依賴於不同的密碼協商演算法,功能有所不同)協商出主金鑰(master secret),有了主金鑰,客戶端和伺服器端就可以保證通訊資料是加密且沒有被篡改。
https 證書最大的問題就是偽造證書的存在,一旦出現偽造證書,安全體系將會非常脆弱,出現偽造證書的原因如下:
ca 機構有意無意會簽發一些錯誤的證書,比如 ca 機構沒有正確校驗申請者的身份。
ca 機構是乙個追求盈利的機構,在利益的驅動下,可能會無節制的簽發證書,如果簽發乙個惡意的二級 ca 證書,帶來的危害更大。
攻擊者會通過各種技術攻擊手段,冒充或者偽造某個網域名稱的擁有者,從而成功申請到一張證書,然後通過證書進行危害操作。
這時,證書的使用者可能會存在下面的困惑:
網域名稱擁有者無法知曉那些 ca 機構給他簽發了證書,也不知道是否有人冒充他的身份申請證書並提供服務。
ca 機構並不清楚它到底簽發了多少證書,也不確定是否簽發了偽造證書,二級 ca 簽發機制不可控。
對於瀏覽器來說,它沒有技術手段校驗證書是否是合法的。
證書透明度
為了解決證書潛在的問題,谷歌提出了乙個解決方案,這就是證書透明度(ct)。ct 是一組技術解決方案,它能夠審計、監控證書的簽發、使用,從而讓更透明,它不是證書的替代解決方案,而是證書的有效補充。通過 ct,能夠達成以下的幾個目標:
ca 機構能夠知曉其簽發了那些證書,並快速檢測到是否簽發惡意證書了。
**擁有者能夠知曉網域名稱對應證書簽發的全過程,一旦發現有攻擊者偽造了網域名稱對應的證書,可以快速聯絡 ca 機構,吊銷該證書。
瀏覽器廠商能夠審計證書的使用情況,如果發現有惡意證書,可以快速關閉https連線,保障使用者的安全。
ct 日誌服務所使用的技術和區塊鏈技術非常類似,通過密碼學手段(merkle hash tree)保證了其資料只能增長,但修改、插入、刪除都會被發現。由於審計單條資料的成本並不高,審計員可以是乙個單獨的服務,也可以是觀察者的一項功能,甚至可以作為客戶端的一部分。
expect-ct
為了確保瀏覽器能在訪問到缺少 ct 監督的證書(例如 ca 意外發出的證書)時採取措施,google 提案增加了乙個新的 expect-ct http header,該 http header 用來告訴瀏覽器期望證使用書透明度服務。expect-ct ct 頭部允許站點選擇報告或強制執行證書透明度要求,這可以防止站點證書錯誤被忽視的情況。當站點啟用 expect-ct ct header 時,瀏覽器會檢查該站點使用的證書是否出現在公共ct日誌中,這能有效的避免中間人攻擊等 https 威脅,讓站點更加安全。
expect-ct: report-uri="", enforce,max-age=
在部署的時候有兩種策略可供選擇,一種是僅報告,一種是強制執行。在僅報告策略中,瀏覽器在沒有收到有效的ct資訊情況下,會向report-uri設定的位址傳送報告。對於該策略,你可以如下設定:
expect-ct: max-age=0, report-uri="https://.report-uri.com/r/d/ct/reportonly"
該策略下,如果瀏覽器未收到有效的ct資訊,不會終止連線,只會向你指定的uri傳送報告。而第二種策略可如下設定:
expect-ct: enforce, max-age=30, report-uri="https://.report-uri.com/r/d/ct/enforce"
這也就是告訴瀏覽器強制執行 ct 策略並且快取該狀態 30s 。如果瀏覽器沒有收到有效的 ct 資訊,將會終止鏈結同時也會傳送報告。在正確的配置好 ct 資訊後,你可以將該時間設定的更長。 AF 配置https證書,防止被抓包
1.afsecuritypolicy customsecuritypolicy 需要伺服器提供乙個crt檔案 把.crt檔案 匯入 鑰匙串中,並匯出.cer證書 把.cer證書 放在 專案目錄下,並作如下操作。把第一段 放在你 網路請求的類中。順便 加上 在網上查到的資料 afsecuritypol...
如何部署HTTPS 申請證書 安裝證書?
安全可信的ssl證書需要向ca機構 證書授權頒發中心 申請,通過嚴格的審查後才給予頒發。ssl證書如何申請?主要有下面幾個步驟 1 生成證書請求檔案csr csr certificate secure request 就是證書請求檔案,站長進行ssl證書申請的第一步就是要生成csr證書請求檔案,系統...
如何防止ip被ban
一 建立高匿ip位址池 1 什麼是虛擬ip 虛擬ip 是指由總部 mdlan 指定總部空閒的一段ip 作為移動使用者接入時的虛擬ip 池。當移動使用者接入後,分配乙個虛擬ip 給移動使用者,移動使用者對總部的任何操作都是以分配的ip 作為源ip 就完全和在總部區域網內一樣。例如使用虛擬ip 的移動接...