詳解HTTPS中數(shù)字證書驗(yàn)證系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
關(guān)于瀏覽器驗(yàn)證網(wǎng)站數(shù)字證書的流程網(wǎng)上的資料一般講的都不是很清楚。在查閱了不少資料后終于搞清楚這部分。
CA下發(fā)給網(wǎng)站的證書都是一個(gè)證書鏈,也就是一層一層的證書,從根證書開始,到下級(jí)CA,一層一層,最后一層就是網(wǎng)站證書。
瀏覽器收到服務(wù)器發(fā)送的證書后,需要驗(yàn)證其真實(shí)性。而證書的簽名是通過(guò)簽名算法和上級(jí)CA的私鑰生成的,并非很多文章里簡(jiǎn)單說(shuō)的靠CA私鑰生成。瀏覽器需要用上級(jí)CA的公鑰才能解密簽名,并與生成的指紋對(duì)比,那么問題來(lái)了,這個(gè)上級(jí)CA的公鑰從哪來(lái)呢?
答案是此公鑰來(lái)自于證書鏈該層的上級(jí)CA的證書明文內(nèi)。單個(gè)X509v3證書由以下部分組成:
X.509v3證書由三部分組成:
tbsCertificate (to be signed certificate),待簽名證書。 SignatureAlgorithm,簽名算法。 SignatureValue,簽名值。
tbsCertificate又包含10項(xiàng)內(nèi)容,在HTTPS握手過(guò)程中以明文方式傳輸:
Version Number,版本號(hào)。 Serial Number,序列號(hào)。 Signature Algorithm ID,簽名算法ID。 Issuer Name,發(fā)行者。 Validity period,有效時(shí)間。 Subject name ,證書主體名稱。 Subject Public Key Info ,證書主體公鑰信息,包含公鑰算法和公鑰值。 Issuer Unique Identifier (optional),發(fā)行商唯一ID。 Subject Unique Identifier (optional),主體唯一ID。 Extensions (optional),擴(kuò)展。
證書鏈由多個(gè)證書一層一層組成的,除了最底層的網(wǎng)站證書的公鑰是給用戶加密報(bào)文外,其他層證書中的公鑰均用于解密底層的證書指紋簽名。最高層的根證書是自簽名的,也就是自己頒發(fā)給自己,所以它的公鑰不僅用來(lái)解密下層的簽名,也用來(lái)給自己的簽名解密。
驗(yàn)證證書是否真實(shí)的任務(wù)完成了,那么證書是否可靠如何驗(yàn)證呢?一句話,只要根證書可靠,整個(gè)證書鏈就可靠,而根證書是否可靠要看這個(gè)根證書是否在操作系統(tǒng)或?yàn)g覽器內(nèi)置的可信根證書內(nèi),在的話就可信。