SSL認證:單向認證與雙向認證
目前SSL證書認證分為單向認證域雙向認證,單向認證只要求站點部署了ssl證書,任何用戶都可以去訪問(IP被限制除外等),只是服務端提供了身份認證。而雙向認證則是需要是服務端需要客戶端提供身份認證,只能是服務端允許的客戶能去訪問,安全性相對於要高一些。
一般Web應用都是采用單向認證的,因為用戶數目廣泛,且無需做在通訊層做用戶身份驗證,一般都在應用邏輯層來保證用戶的合法登入。但如果是企業應用對接,情況就不一樣,可能會要求對客戶端做身份驗證。這時就需要做雙向認證。
SSL單向認證
客戶端向服務端發送SSL協議版本號、加密算法種類、隨機數等信息。
服務端給客戶端返回SSL協議版本號、加密算法種類、隨機數等信息,同時也返回服務器端的證書,即公鑰證書
客戶端使用服務端返回的信息驗證服務器的合法性,包括:
證書是否過期
發型服務器證書的CA是否可靠
返回的公鑰是否能正確解開返回證書中的數字簽名
服務器證書上的域名是否和服務器的實際域名相匹配
驗證通過後,將繼續進行通信,否則,終止通信
客戶端向服務端發送自己所能支持的對稱加密方案,供服務器端進行選擇
服務器端在客戶端提供的加密方案中選擇加密程度最高的加密方式。
服務器將選擇好的加密方案通過明文方式返回給客戶端
客戶端接收到服務端返回的加密方式後,使用該加密方式生成產生隨機碼,用作通信過程中對稱加密的密鑰,使用服務端返回的公鑰進行加密,將加密後的隨機碼發送至服務器
服務器收到客戶端返回的加密信息後,使用自己的私鑰進行解密,獲取對稱加密密鑰。
在接下來的會話中,服務器和客戶端將會使用該密碼進行對稱加密,保證通信過程中信息的安全。
SSL雙向認證過程
① 瀏覽器發送一個連接請求給安全服務器。
② 服務器將自己的證書,以及同證書相關的信息發送給客戶瀏覽器。
③ 客戶瀏覽器檢查服務器送過來的證書是否是由自己信賴的 CA 中心所簽發的。如果是,就繼續執行協議;如果不是,客戶瀏覽器就給客戶一個警告消息:警告客戶這個證書不是可以信賴的,詢問客戶是否需要繼續。
④ 接著客戶瀏覽器比較證書裏的消息,例如域名和公鑰,與服務器剛剛發送的相關消息是否一致,如果是一致的,客戶瀏覽器認可這個服務器的合法身份。
⑤ 服務器要求客戶發送客戶自己的證書。收到後,服務器驗證客戶的證書,如果沒有通過驗證,拒絕連接;如果通過驗證,服務器獲得用戶的公鑰。
⑥ 客戶瀏覽器告訴服務器自己所能夠支持的通訊對稱密碼方案。
⑦ 服務器從客戶發送過來的密碼方案中,選擇一種加密程度最高的密碼方案,用客戶的公鑰加過密後通知瀏覽器。
⑧ 瀏覽器針對這個密碼方案,選擇一個通話密鑰,接著用服務器的公鑰加過密後發送給服務器。
⑨ 服務器接收到瀏覽器送過來的消息,用自己的私鑰解密,獲得通話密鑰。
⑩ 服務器、瀏覽器接下來的通訊都是用對稱密碼方案,對稱密鑰是加過密的。
SSL認證:單向認證與雙向認證