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