iT邦幫忙

0

[SSL] 自簽憑證的CA公鑰怎麼被拿到?

據我所知,SSL過程大致如下

  1. 拿到Server給的憑證
  2. 看CA是誰,拿CA的公鑰解開憑證,查看Server的公鑰
  3. 接下來就是其他動作,與此問題無關。

我疑惑的是第二點
問題一
現在有公信力的CA的公鑰,是包在一個憑證裡嗎?
我自己腦海中想像是這樣的:假設一個有公信力的CA叫做CA1,幫自己簽一個憑證,CA1的公鑰包在那個憑證裡面,但要有CA1的公鑰才能解開這個憑證確定CA1的公鑰是正確的,而不是中間人的,到底是怎麼運作(要先有公鑰才能解開知道公鑰?)/images/emoticon/emoticon06.gif?

問題二
假設現在是我自己自簽憑證,CA公鑰沒有在網路上流通,CA的公鑰如何被客戶端拿到來解開憑證,得以拿到Server的公鑰?

1 個回答

8
raytracy
iT邦大神 1 級 ‧ 2020-09-14 01:16:12
最佳解答

根憑證(root certificate)是屬於根憑證頒發機構(CA)的公鑰憑證, 根憑證沒有上層機構再為其本身作數位簽章,所以都是自簽憑證。許多應用軟體(例如作業系統、網頁瀏覽器)會預先安裝可被信任的根憑證,這代表用戶授權了應用軟體代為審核哪些根憑證機構屬於可靠
https://zh.wikipedia.org/zh-tw/%E6%A0%B9%E8%AF%81%E4%B9%A6

CA Certificate List 各家的處理方法不同:

Firefox 瀏覽器: 從它們自行維護的 CA 憑證庫清單下載
https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport

Opera 瀏覽器: 從它們自行維護的 CA 憑證庫清單下載
https://certs.opera.com/

Chrome 瀏覽器: 使用 OS 自帶的 CA 憑證庫 (由 OS 負責更新)
http://www.chromium.org/Home/chromium-security/root-ca-policy

iOS 手機: 由 Apple 自行維護 CA 憑證庫清單
https://support.apple.com/zh-tw/HT204132

你自己做的自簽憑證的話, 你要把 CA Root 的憑證匯出, 寄給每一個 Client 用戶, 請它們安裝到 OS 或 瀏覽器內, 才能被驗證....

如果你是 AD 環境, 所有用戶都加入 AD 的話, 可以透過 GPO 來自動派送...要不然, 你也可以向瀏覽器開發商申請審核, 將你的 Root CA 列入他們的憑證庫, 發布給所有使用者 (這個前提是, 你的 CA 憑證簽發過程需要經過法律見證, 而且你的機構要證明有能力防止私鑰被盜走)....

wrxue iT邦新手 1 級 ‧ 2020-09-14 08:35:54 檢舉

https://ithelp.ithome.com.tw/upload/images/20200914/20117357Ni2hJxLfvl.png
大神,請問以這張圖為例(來自您提供的的維基百科連結),
所謂的驗證,是否為拿公鑰去驗證簽署欄位(例如根發行機構的公鑰去驗證根發行機構的簽署)的過程?
而其他除了簽署的欄位(例如根發行機構的名稱,根發行機構的公鑰)皆為明碼,所以不用再解碼了?

raytracy iT邦大神 1 級 ‧ 2020-09-14 10:00:28 檢舉

是的

wrxue iT邦新手 1 級 ‧ 2020-09-14 11:03:30 檢舉

感謝您

我要發表回答

立即登入回答