日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于SSL证书链的一些认识

發(fā)布時間:2023/12/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于SSL证书链的一些认识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、數(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ù)據(jù):包括 簽發(fā)人(Issuer)地址簽發(fā)時間有效期 等,還包括證書持有者(Owner)基本信息,比如 DN(DNS Name,即證書生效的域名)Owner 公鑰 等信息
  • 使用通用的 Hash 算法(如SHA-256)對證書元數(shù)據(jù)計算生成 數(shù)字摘要
  • 使用 Issuer 的私鑰對該數(shù)字摘要進行加密,生成一個加密的數(shù)字摘要,也就是Issuer的 數(shù)字簽名
  • 將數(shù)字簽名附加到數(shù)字證書上,變成一個 簽過名的數(shù)字證書
  • 將簽過名的數(shù)字證書與 Issuer 的公鑰,一同發(fā)給證書使用者(注意,將公鑰主動發(fā)給使用者是一個形象的說法,只是為了表達使用者最終獲取到了 Issuer 的公鑰)
  • 驗證證書的過程

  • 證書使用者獲通過某種途徑(如瀏覽器訪問)獲取到該數(shù)字證書,解壓后分別獲得 證書元數(shù)據(jù)數(shù)字簽名
  • 使用同樣的Hash算法計算證書元數(shù)據(jù)的 數(shù)字摘要
  • 使用 Issuer 的公鑰 對數(shù)字簽名進行解密,得到 解密后的數(shù)字摘要
  • 對比 2 和 3 兩個步驟得到的數(shù)字摘要值,如果相同,則說明這個數(shù)字證書確實是被 Issuer 驗證過合法證書,證書中的信息(最主要的是 Owner 的公鑰)是可信的
  • 上述是對數(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:即 baidu.com,該證書包含百度的公鑰,訪問者就是使用該公鑰將數(shù)據(jù)加密后再傳輸給百度,即在 HTTPS 中使用的證書
  • intermediates:即上文提到的 簽發(fā)人 Issuer,用來認證公鑰持有者身份的證書,負責確認 HTTPS 使用的 end-user 證書確實是來源于百度。這類 intermediates 證書可以有很多級,也就是說 簽發(fā)人 Issuer 可能會有有很多級
  • root:可以理解為 最高級別的簽發(fā)人 Issuer,負責認證 intermediates 身份的合法性
  • 這其實代表了一個信任鏈條,最終的目的就是為了保證 end-user 證書是可信的,該證書的公鑰也就是可信的。

    證書鏈

    結合實際的使用場景對證書鏈進行一個歸納:

  • 為了獲取 end-user 的公鑰,需要獲取 end-user 的證書,因為公鑰就保存在該證書中
  • 為了證明獲取到的 end-user 證書是可信的,就要看該證書是否被 intermediate 權威機構認證,等價于是否有權威機構的數(shù)字簽名
  • 有了權威機構的數(shù)字簽名,而權威機構就是可信的嗎?需要繼續(xù)往上驗證,即查看是否存在上一級權威認證機構的數(shù)字簽名
  • 信任鏈條的最終是Root CA,他采用自簽名,對他的簽名只能無條件的信任
  • 證書鏈逐級認證

    說到無條件信任,也不用奇怪,尤瓦爾赫拉里在《人類簡史》中已經(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证书链的一些认识的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。