上一講聊到架設網站時,提供的數位憑證在申請和實際被驗證時是怎麼樣的流程。今天我們接續昨天的問題接著聊下去:
如果瀏覽器中就預存了被信任的 CA 資訊及其公鑰,那麼有新的 CA 加入時該怎麼更新?
如果這一組公鑰私鑰被竊取了該怎麼辦?
首先,這些被瀏覽器所預存的資訊,我們稱作根憑證(Root Certificate),這是一組由被信任的 CA 所自我簽署(Self-Signed)的憑證,也就是自己為自己背書。
而之所以是被信任的 CA,以及自我簽署還能被大家所信任, CA 本身要夠有公信力,例如一些專業機構:Google、DigiCert、Let’s Encrypt 等等。
除此之外,還有個鑰匙典禮(Key Ceremony)的儀式,由 ICANN 所舉辦。過程中按照嚴格的流程,簽署並產生新的一組根憑證,期間更有許多公證人、律師,以及錄影的監察下所完成,一切都是為了保證這個要被廣泛使用的根憑證能被大家所信任。
而責任如此重大的根憑證,基本上不會用來簽署一般的伺服器等級的憑證,因為太多網站的憑證等著被簽署,會有管理及安全上的風險。
管理上,如果想要撤銷某個組織的所有憑證,當這些憑證都是透過根憑證來簽署的話,就要各別處理。
安全上,由於根憑證是整個 PKI(Public Key Infrastructure,公開金鑰基礎建設)的地基之一,當根憑證密鑰洩露了,數以萬計的網站就會暴露在資安的風險之中,很可怕地!真要不幸洩漏密鑰,就得重新走一次鑰匙典禮的流程,並且通知所有受影響的憑證持有者。
因此,如果有方法讓根憑證解決管理及安全上的問題,那就會好得多。於是乎中繼憑證及信任鏈的概念就被發明出來了。
所謂中繼憑證(Intermediate Certificate)就是幫助根憑證,為客戶簽署伺服器憑證的中繼點,其本身是被根憑證簽署過的。
中繼憑證可以比較有效的解決上述所說的管理問題,例如對頒發給某個組織的憑證一個較短的有效期,時間到了就自動過期;或是主動撤銷這張中繼憑證,讓此組織的所有憑證失效。
也由於簽署伺服器等級的憑證不是透過根憑證,中繼憑證也能有效的降低資安的風險。如果其密鑰洩漏,損失也只限縮在這個中繼憑證所簽署的客戶而已。
那麼,如果伺服器憑證並非由根憑證直接簽署,我們該如何驗證某個網站的憑證是可以信任的呢?
這就不得不提信任鏈(Trust Chain)了!所謂的信任鏈就是一連串的數位憑證,傳遞信任的過程。
*信任鏈範例
例如我們信任 TWCA(台灣網路認證)的根憑證 TWCA Global Root CA,是因為在瀏覽器預設就有這個預設的根憑證。而 TWCA Secure SSL Certification Authority 又是此根憑證所簽署的中繼憑證,我們也因此信任。
最後 *.ithome.com.tw 這個伺服器憑證又是被 TWCA 的中繼憑證所簽署的,我們基於信任中繼憑證,也就信任此伺服器憑證,這就是所謂的信任鏈。
總結來說,當我們訪問一個有憑證的網站時,我們會得到此伺服器的憑證,以及一個中繼憑證(如果不是被根憑證直接簽發的話)。透過信任鏈,我們最終可以得知這個伺服器憑證是否為是可以信任的。