http://blog.csdn.net/junehappylove/article/details/52288796
指紋:hash(指紋算法)過后的證書信息,用來保證證書信息完整性氓英,防止黑客篡改鹦筹。hash是單向的,只能通過內容生成hash值饰迹,不能反推
簽名:通過非對稱加密算法和其私鑰(CA私鑰)對指紋加密啊鸭,形成簽名钟些。
瀏覽器驗證證書:通過公鑰(這個公鑰并不是證書中的公鑰篙耗,證書中的公鑰是服務器提供的公鑰,這里的是CA的公鑰)解密簽名,然后用同樣的的指紋算法hash證書信息硅堆,最后驗證是否和指紋相同。
重點:
step1: “客戶”向服務端發(fā)送一個通信請求
“客戶”->“服務器”:你好
step2: “服務器”向客戶發(fā)送自己的數(shù)字證書民褂。證書中有一個公鑰用來加密信息茄菊,私鑰由“服務器”持有
“服務器”->“客戶”:你好,我是服務器赊堪,這里是我的數(shù)字證書
step3: “客戶”收到“服務器”的證書后面殖,它會去驗證這個數(shù)字證書到底是不是“服務器”的,數(shù)字證書有沒有什么問題哭廉,數(shù)字證書如果檢查沒有問題脊僚,就說明數(shù)字證書中的公鑰確實是“服務器”的。檢查數(shù)字證書后遵绰,“客戶”會發(fā)送一個隨機的字符串給“服務器”用私鑰去加密辽幌,服務器把加密的結果返回給“客戶”增淹,“客戶”用公鑰解密這個返回結果,如果解密結果與之前生成的隨機字符串一致乌企,那說明對方確實是私鑰的持有者虑润,或者說對方確實是“服務器”。
“客戶”->“服務器”:向我證明你就是服務器加酵,這是一個隨機字符串 //前面的例子中為了方便解釋拳喻,用的是“你好”等內容,實際情況下一般是隨機生成的一個字符串虽画。
“服務器”->“客戶”:{一個隨機字符串}[私鑰|RSA]
step4: 驗證“服務器”的身份后舞蔽,“客戶”生成一個對稱加密算法和密鑰,用于后面的通信的加密和解密码撰。這個對稱加密算法和密鑰渗柿,“客戶”會用公鑰加密后發(fā)送給“服務器”,別人截獲了也沒用脖岛,因為只有“服務器”手中有可以解密的私鑰朵栖。這樣,后面“服務器”和“客戶”就都可以用對稱加密算法來加密和解密通信內容了柴梆。
“服務器”->“客戶”:{OK陨溅,已經(jīng)收到你發(fā)來的對稱加密算法和密鑰!有什么可以幫到你的绍在?}[密鑰|對稱加密算法]
“客戶”->“服務器”:{我的帳號是aaa门扇,密碼是123,把我的余額的信息發(fā)給我看看}[密鑰|對稱加密算法]
“服務器”->“客戶”:{你好偿渡,你的余額是100元}[密鑰|對稱加密算法]