要想弄明白SSL認證原理,首先要對CA有有所了解,它在SSL認證過程中有非常重要的作用。
說白了,CA就是一個組織,專門為網絡服務器頒發證書的,國際知名的CA機構有VeriSign、Symantec,國內的有GlobalSign。
每一家CA都有自己的根證書,用來對它所簽發過的服務器端證書進行驗證。
如果服務器提供方想為自己的服務器申請證書,它就需要向CA機構提出申請。
服務器提供方向CA提供自己的身份信息,CA判明申請者的身份后,就為它分配一個公鑰,
並且CA將該公鑰和服務器身份綁定在一起,並為之簽字,這就形成了一個服務器端證書。
如果一個用戶想鑒別另一個證書的真偽,他就用CA的公鑰對那個證書上的簽字進行驗證,一旦驗證通過,該證書就被認為是有效的。
證書實際是由證書簽證機關(CA)簽發的對用戶的公鑰的認證。
證書的內容包括:電子簽證機關的信息、公鑰用戶信息、公鑰、權威機構的簽字和有效期等等。
目前,證書的格式和驗證方法普遍遵循X.509國際標准。
申請證書過程
首先要有一個CA根證書,然后用CA根證書來簽發用戶證書。
用戶進行證書申請:
1. 先生成一個私鑰
2. 用私鑰生成證書請求(證書請求里應含有公鑰信息)
3. 利用證書服務器的CA根證書來簽發證書
這樣最終拿到一個由CA根證書簽發的證書,其實證書里僅有公鑰,而私鑰是在用戶手里的。
SSL工作流程(單向)
1.客戶端say hello 服務端
2.服務端將證書、公鑰等發給客戶端
3.客戶端CA驗證證書,成功繼續、不成功彈出選擇頁面
4.客戶端告知服務端所支持的加密算法
5.服務端選擇最高級別加密算法明文通知客戶端
6.客戶端生成隨機對稱密鑰key,使用服務端公鑰加密發送給服務端
7.服務端使用私鑰解密,獲取對稱密鑰key
8.后續客戶端與服務端使用該密鑰key進行加密通信
SSL工作流程(雙向)
單向認證,僅僅是客戶端需要檢驗服務端證書是否是正確的,而服務端不會檢驗客戶端證書是否是正確的。 雙向認證,指客戶端驗證服務器端證書,而服務器也需要通過CA的公鑰證書來驗證客戶端證書。
雙向驗證的過程:
1.客戶端say hello 服務端
2.服務端將證書、公鑰等發給客戶端
3.客戶端CA驗證證書,成功繼續、不成功彈出選擇頁面
4.客戶端將自己的證書和公鑰發送給服務端
5.服務端驗證客戶端證書,如不通過直接斷開連接
6.客戶端告知服務端所支持的加密算法
7.服務端選擇最高級別加密算法使用客戶端公鑰加密后發送給客戶端
8.客戶端收到后使用私鑰解密並生成隨機對稱密鑰key,使用服務端公鑰加密發送給服務端
9.服務端使用私鑰解密,獲取對稱密鑰key
10.后續客戶端與服務端使用該密鑰key進行加密通信