服務(wù)方 S 向第三方機構CA提交公鑰、組織信息、個(gè)人信息(域名)等信息并申請認證;
CA 通過(guò)線(xiàn)上、線(xiàn)下等多種手段驗證申請者提供信息的真實(shí)性,如組織是否存在、企業(yè)是否合法,是否擁有域名的所有權等;
如信息審核通過(guò),CA 會(huì )向申請者簽發(fā)認證文件-證書(shū)。
證書(shū)包含以下信息:申請者公鑰、申請者的組織信息和個(gè)人信息、簽發(fā)機構 CA 的信息、有效時(shí)間、證書(shū)序列號等信息的明文,同時(shí)包含一個(gè)簽名;
簽名的產(chǎn)生算法:首先,使用散列函數計算公開(kāi)的明文信息的信息摘要,然后,采用 CA 的私鑰對信息摘要進(jìn)行加密,密文即簽名;
客戶(hù)端 C 向服務(wù)器 S 發(fā)出請求時(shí),S 返回證書(shū)文件;
客戶(hù)端 C 讀取證書(shū)中的相關(guān)的明文信息,采用相同的散列函數計算得到信息摘要,然后,利用對應 CA 的公鑰解密簽名數據,對比證書(shū)的信息摘要,如果一致,則可以確認證書(shū)的合法性,即公鑰合法;
客戶(hù)端然后驗證證書(shū)相關(guān)的域名信息、有效時(shí)間等信息;
客戶(hù)端會(huì )內置信任 CA 的證書(shū)信息(包含公鑰),如果CA不被信任,則找不到對應 CA 的證書(shū),證書(shū)也會(huì )被判定非法。
在這個(gè)過(guò)程注意幾點(diǎn):
- 申請證書(shū)不需要提供私鑰,確保私鑰永遠只能服務(wù)器掌握;
- 證書(shū)的合法性仍然依賴(lài)于非對稱(chēng)加密算法,證書(shū)主要是增加了服務(wù)器信息以及簽名;
- 內置 CA 對應的證書(shū)稱(chēng)為根證書(shū),頒發(fā)者和使用者相同,自己為自己簽名,即自簽名證書(shū);
- 證書(shū)=公鑰+申請者與頒發(fā)者信息+簽名;
客戶(hù)端向一個(gè)需要https訪(fǎng)問(wèn)的網(wǎng)站發(fā)起請求。
服務(wù)器將證書(shū)發(fā)送給客戶(hù)端進(jìn)行校驗。證書(shū)里面包含了其公鑰。這里要特別說(shuō)一下客戶(hù)端到底 如何來(lái)校驗對方發(fā)過(guò)來(lái)的數字證書(shū)是否有效。
首先在本地電腦尋找是否有這個(gè)服務(wù)器證書(shū)上的ca機構的根證書(shū)。如果有繼續下一步,如果沒(méi)有彈出警告。
使用ca機構根證書(shū)的公鑰對服務(wù)器證書(shū)的指紋和指紋算法進(jìn)行解密。 得到指紋算法之后,拿著(zhù)這個(gè)指紋算法對服務(wù)器證書(shū)的摘要進(jìn)行計算得到指紋。
將計算出的指紋和從服務(wù)器證書(shū)中解密出的指紋對比看是否一樣如果一樣則通過(guò)認證。
校驗成功之后,客戶(hù)端會(huì )生成一個(gè)隨機串然后使用服務(wù)器證書(shū)的公鑰進(jìn)行加密之后發(fā)送給服務(wù)器。
服務(wù)器通過(guò)使用自己的私鑰解密得到這個(gè)隨機值。
服務(wù)器從此開(kāi)始使用這個(gè)隨機值進(jìn)行對稱(chēng)加密開(kāi)始和客戶(hù)端進(jìn)行通信。
客戶(hù)端拿到值用對稱(chēng)加密方式 使用隨機值進(jìn)行解密。
為什么不一直使用非對稱(chēng)進(jìn)行加密,而是在類(lèi)似握手之后開(kāi)始使用對稱(chēng)加密算法進(jìn)行https通信:
非對稱(chēng)加密的消耗和所需的計算以及時(shí)間遠比對稱(chēng)加密消耗要大,所以在握手和認證之后,服務(wù)器和客戶(hù)端就開(kāi)始按照約定的隨機串,對后續的數據傳輸進(jìn)行加密。
特點(diǎn):
非對稱(chēng)加密相比對稱(chēng)加密更加安全
非對稱(chēng)加密算法對加密內容的長(cháng)度有限制
CA數字證書(shū)作用之一是公鑰分發(fā)
數字簽名的簽發(fā)過(guò)程是私鑰加密,公鑰解密
聯(lián)系客服