关于SSL证书链的一些认识
一、數(shù)字證書(shū)的基礎(chǔ)知識(shí)
數(shù)字證書(shū)是用來(lái)認(rèn)證公鑰持有者身份合法性的電子文檔,以防止第三方冒充行為。數(shù)字證書(shū)由 CA(Certifacate Authority) 負(fù)責(zé)簽發(fā),關(guān)鍵內(nèi)容包括 頒發(fā)s者、證書(shū)有效期、使用者組織、使用者公鑰 等信息。數(shù)字證書(shū)涉及到一個(gè)名為 PKI(Public Key Infrastructure) 的規(guī)范體系,包含了數(shù)字證書(shū)格式定義、密鑰生命周期管理、數(shù)字簽名及驗(yàn)證等多項(xiàng)技術(shù)說(shuō)明,不在這篇筆記中詳細(xì)展開(kāi)。
我們借助下面的流程,看看 CA 是如何簽發(fā)一張證書(shū),使用者又是如何驗(yàn)證這樣證書(shū)的。這又涉及到了數(shù)字簽名技術(shù),數(shù)字簽名技術(shù)又是基于公鑰密碼技術(shù)。
現(xiàn)實(shí)世界中,簽名是針對(duì)承諾的一種表現(xiàn)形式,手手段可以通過(guò)手寫(xiě)簽字或蓋扣印章;而在數(shù)字世界中,簽名仍然是為了表示承諾,只是手段變成了二進(jìn)制。
好,我們來(lái)看看 CA 數(shù)字簽名包括兩個(gè)過(guò)程:簽發(fā)證書(shū)(Signing) 和 驗(yàn)證證書(shū)(Verification)
數(shù)字簽名與驗(yàn)證
簽發(fā)證書(shū)的過(guò)程
驗(yàn)證證書(shū)的過(guò)程
上述是對(duì)數(shù)字證書(shū)的簽名和驗(yàn)證過(guò)程,對(duì)普通數(shù)據(jù)的數(shù)字簽名和驗(yàn)證也是利用了同樣的方法。
我們?cè)賮?lái)總結(jié)一下“簽發(fā)證書(shū)”與“驗(yàn)證證書(shū)”兩個(gè)過(guò)程,Issuer(CA)使用 Issuer 的私鑰 對(duì)簽發(fā)的證書(shū)進(jìn)行數(shù)字簽名,證書(shū)使用者使用 Issuser 的公鑰 對(duì)證書(shū)進(jìn)行校驗(yàn),如果校驗(yàn)通過(guò),說(shuō)明該證書(shū)可信。
由此看出,校驗(yàn)的關(guān)鍵是 Issuer 的公鑰,使用者獲取不到 Issuer 的私鑰,只能獲取到 Issuer 的公鑰,如果 Issuer 是一個(gè)壞家伙,誰(shuí)來(lái)證明 Issuer 的身份 是可信的?
這就涉及到一個(gè)信任鏈條了,也是這篇筆記本身要講述的事情,證書(shū)鏈。
二、什么是證書(shū)鏈?
有兩種類(lèi)型的證書(shū)機(jī)構(gòu)(CA)?:根CA和中間CA。為了使SSL證書(shū)受信任,該證書(shū)必須由正在連接的設(shè)備的受信任存儲(chǔ)區(qū)中包括的CA頒發(fā)。
如果證書(shū)不是由受信任的CA頒發(fā)的,則連接設(shè)備(例如Web瀏覽器)將檢查以查看頒發(fā)CA的證書(shū)是否由受信任的CA頒發(fā)。它會(huì)繼續(xù)檢查,直到找到受信任的CA(此時(shí)將建立受信任的安全連接),或者找不到受信任的CA(此時(shí)設(shè)備通常將顯示錯(cuò)誤)。
從根證書(shū)到最終用戶(hù)證書(shū)的SSL證書(shū)列表代表SSL證書(shū)鏈。
下面以百度為例,在瀏覽器上訪(fǎng)問(wèn) “www.baidu.com” 域名,地址連左側(cè)有一個(gè)小鎖的標(biāo)志,點(diǎn)擊就能查看百度的數(shù)字證書(shū),如下圖所示(使用的是Edge瀏覽器)
百度數(shù)字證書(shū)
在圖片的頂部,我們看到這樣一個(gè)層次關(guān)系:
GlobalSign Root CA -> GlobalSign Organization Validation CA -> baidu.com
這個(gè)層次可以抽象為三個(gè)級(jí)別:
這其實(shí)代表了一個(gè)信任鏈條,最終的目的就是為了保證 end-user 證書(shū)是可信的,該證書(shū)的公鑰也就是可信的。
證書(shū)鏈
結(jié)合實(shí)際的使用場(chǎng)景對(duì)證書(shū)鏈進(jìn)行一個(gè)歸納:
證書(shū)鏈逐級(jí)認(rèn)證
說(shuō)到無(wú)條件信任,也不用奇怪,尤瓦爾赫拉里在《人類(lèi)簡(jiǎn)史》中已經(jīng)闡述過(guò),基于虛構(gòu)故事所建立的信任,最終將人類(lèi)待到了今天。
還有一個(gè)小問(wèn)題,Root 根證書(shū)從何而來(lái)呢?除了自行下載安裝之外,瀏覽器、操作系統(tǒng)等都會(huì)內(nèi)置一些 Root 根證書(shū),稱(chēng)之為 Rrusted Root Certificates。比如 Apple MacOS 官網(wǎng)就記錄了操作系統(tǒng)中內(nèi)置的可信任根證書(shū)列表。
macOS High Sierra 中可用的受信任根證書(shū)列表
參考:What is the SSL Certificate Chain?
?
總結(jié)
以上是生活随笔為你收集整理的关于SSL证书链的一些认识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 运维流程化和标准化
- 下一篇: 从wolai转移到Notion