對於http協議,中間人攻擊(man in the middle)是一種著名的攻擊方式。
圖中john和mary作為通訊的雙方,frank為攻擊者
1. john向mary傳送一段資料
2. frank截獲了john的包,竊取/修改資料後,偽裝成john繼續將包**給mary
3. mary不知道frank的存在,認為只是收到了來自john的資料,因為返回一段資料給john
4. frank截獲這段返回資料的包,竊取/修改資料後,傳送給john
這樣,frank就成功竊取了john和mary的通訊資料,並且john和mary都不知道frank的存在。
從中間人攻擊的方式可以看出,frank攻擊得以成功的關鍵是john和mary沒有一種既唯一標識自己,同時又能不被他人偽裝的方式。ssl證書就是為了解決這個問題。
對於每乙個使用https協議的**,可以看到該**的證書資訊,圖中是google使用的證書資訊。
2.1證書鏈
證書以證書鏈的形式存在
1. 最上層為root,也就是通常所說的ca,用來頒發證書
2. 最下層為end-user,對應每個**購買使用的證書
3. 中間一層為intermediates,是二級ca,這一層可以繼續劃分為多層,用來幫助root給end-user頒發證書,這樣root只需向intermediates頒發證書
只有當整個證書鏈上的證書都有效時,才會認定當前證書合法
2.2證書資訊
對於每個證書,會有一對公鑰&私鑰,公鑰加密的資料只有私鑰可以解密,私鑰加密的資料只有公鑰可以解密。私鑰由證書所有者保留並且嚴格保密,公鑰則公開使用。
此外,每個證書中還會包含很多資訊,比如頒發機構,有效期等,其中最為重要的乙個是簽名。
簽名是指利用上一層證書的私鑰,加密一些元資訊(證書所有者的資訊,包括基本資訊,公鑰,證書生效網域名稱等)。這樣,當收到簽名證書時,只需要根據ca提供的公鑰對簽名解密,驗證元資訊是否一致,就可以判斷當前證書是否合法。一句話來說就是,每個證書會對下一層的證書合法性做擔保
3.根證書的合法性
既然每個證書會對下一層的證書合法性做擔保,那麼確保根證書的合法性就至關重要。
根證書是一種自簽名證書。在瀏覽器或者作業系統中,會預安裝一些證書,這些證書就是根證書,對於這些證書,在證書驗證的過程中會直接選擇相信。因此不要輕易安裝其他**的證書。
https證書驗證
目前是在 godaddy 申請的 cn test.com 收到檔案後會列印乙份送行政部法務組,存入保險櫃。檔案構成 nginx 上配置 https 需要兩個引數 新證書驗證 2013年10月13日我們收到了新的 gd bundle.crt 和 test.com.crt 兩個檔案,理論上應該是匹配舊的...
HTTPS驗證CA證書
1.https是如何驗證ca證書,保證網頁的安全性的?首先ca證書是有專業機構簽名下發的證書,簽發的證書存放在內建的作業系統中,火狐瀏覽器則存放在內建的瀏覽器中。為了保護根證書的相對安全性,ca頒發給 的是證書鏈。驗證證書是否確實由上級證書簽發的,是通過上級證書的公鑰解密該證書上附帶的由上級證書通過...
Windows下驗證https證書
最近在寫乙個windows桌面程式需要給https請求加上證書驗證,使用的http庫是libcurl openssl,使用openssl自帶的證書驗證功能,只能內嵌ca證書,但是我的程式不方便更新,所以最好的方式是使用windows的證書儲存做驗證,這裡有兩種方式。這種方式的缺點是如果windows...