什么是安全證書,訪問者到底是怎么校驗安全證書的,服務端返回安全證書后,客戶端再向誰驗證呢?


什么是安全證書,訪問者到底是怎么校驗安全證書的,服務端返回安全證書后,客戶端再向誰驗證呢?

private static void trustAllHttpsCertificates() throws Exception { TrustManager[] trustAllCerts = new TrustManager[1];
 
謝邀。
最近在寫https代理的程序,使用openssl實現ssl連接,有涉及到ssl證書。
https的作用有三:1加密傳輸 2認證 3數據完整性
ssl證書的主要是用來做認證和加密。大多數證書基於 X.509 v3 證書標准。
下面以一次ssl連接進行說明。

比如客戶端要認證服務器,服務器怎么證明自己是真實的服務器,而不是釣魚網站呢?這需要服務器有個證書。證書包含以下信息:
    使用者的公鑰值。
    使用者標識信息(如名稱和電子郵件地址)。
    證書的有效時間。
    頒發者CA標識信息。
    頒發者CA的數字簽名。
你可以在IE中Internet選項》內容》證書 中看看證書長什么樣。
 
 
 
 
 
有效的證書需要由權威機構CA簽名,CA會用自己的私鑰來生成數字簽名。這個權威機構CA客戶端是可以完全信任的,客戶端瀏覽器會安裝CA的根證書,由CA簽名的證書是被CA所信任的,這就構成了信任鏈,所以客戶端可以信任該服務器的證書。
客戶端與服務器建立ssl連接時,服務器將自身的證書傳輸給客戶端,客戶端在驗證證書的時候,先看CA的根證書是否在自己的信任根證書列表中。再用CA的根證書提供的公鑰來驗證服務器證書中的數字簽名,如果公鑰可以解開簽名,證明該證書確實被CA所信任。再看證書是否過期,訪問的網站域名與證書綁定的域名是否一致。這些都通過,說明證書可以信任。

接下來使用服務器證書里面的公鑰進行服務器身份的驗證。 客戶端生成一個隨機數給到服務器。 服務器對隨機數進行簽名,並回傳給到客戶端。 客戶端用服務器證書的公鑰對隨機數的簽名進行驗證,若驗證通過,則說明對應的服務器確實擁有對應服務器證書的私鑰,因此判斷服務器的身份正常。否則,則任務服務器身份被偽造。這些都沒問題才說明服務器是可信的。

接下來客戶端會生成會話密鑰,使用服務器公鑰加密。服務器用自己的私鑰解密后,用會話密鑰加密數據進行傳輸。ssl連接就建立了。
 
 
 
 
 
PKI(Public Key Infrastructure,公共密鑰基礎設施)是通過使用公鑰密碼技術和數字證書來確保系統信息安全並負責驗證數字證書持有者身份的一種體系

PKI基本服務:
用戶提交個人信息和公鑰,申請證書;
核准用戶信息,簽發用戶公鑰證書;
查詢給定的證書的狀態(過期、撤銷、掛起、正常等);
PKI系統基本組件:
RA:注冊機構,接受來自用戶的證書請求,驗證用戶信息
CA:認證機構,使用自己的私鑰簽發用戶公鑰證書
CRL發布者:證書撤銷列表,被撤銷的證書的列表
CRL是一種離線證書狀態列表,如果有條件可以使用OCSP組件,在線查詢證書狀態
資料庫:存儲已經簽發過的證書及用戶信息的服務器
訂戶:證書的持有實體
依賴方:依賴PKI提供服務的實體

PKI構成示意圖
 
 
 
 
 
 
 
訂戶公鑰證書由CA簽發,CA即“權威機構”
CA使用自己的私鑰對證書簽名,以證明訂戶身份與公鑰的綁定
依賴方使用CA的公鑰驗證證書上的CA簽名,即可確認綁定關系
問題1:我又怎么知道CA的公鑰是不是真的是這個CA的?
解決方案:找另一個“權威機構”,簽發CA的證書,以證明CA公鑰與CA身份的綁定關系
問題2:那么“另一個權威機構”的公鑰又由誰證明?
另另一個“權威機構”
總有一個最頂層的權威機構,是你不得不無條件信任的
無條件信任的CA,叫做信任錨,即信任的起點
由於信任“信任錨”,進而信任所有由它簽發的其它CA證書


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM