憑證授權單位(certificate authority)
如果憑證是公鑰的護照,那麼憑證授權單位(CA)就是護照辦事處——那個受信任、會查驗你是誰、然後簽發並蓋章的機構。整個系統的關鍵在於信任這些簽發者:你的瀏覽器與作業系統內建了一份它們信任的 CA 清單,而一張憑證只有在由其中之一簽署(或由其中之一輾轉擔保的對象簽署)時,才會被相信。
CA 是這樣做事的。當一個網站營運者想要憑證時,他產生一對金鑰,並送給 CA 一個請求,內含他的公鑰與他宣稱的網域。CA 驗證請求者確實控制那個網域——例如要求他在網站上放一個特定檔案、或在 DNS 裡放一筆特定記錄(這叫網域驗證)。一旦確認,CA 就建立一張把公鑰綁到網域的憑證,並用 CA 自己的私鑰簽署它。任何人現在都能用 CA 廣為散布的公鑰驗證那個簽章、進而信任這個綁定——CA 的鏈(一個根 CA 擔保中介 CA)能在不暴露珍貴根金鑰的情況下延伸這份信任。
為什麼重要:CA 是讓 HTTPS 能在網際網路規模上運作的信任錨——你能信任數百萬個從未造訪過的網站,是因為你信任那幾百個 CA。但這也是它的弱點。CA 是單一信任點:若某個 CA 被入侵、或被騙而簽發一張詐欺性憑證,攻擊者就能冒充任何網站。這發生過。憑證透明度(Certificate Transparency,把每一張簽發的憑證公開記錄下來)與憑證撤銷這類防禦之所以存在,正是因為我們放在 CA 身上的信任既強大、一旦被濫用便危險。
一個部落格主向 CA 申請 myblog.example 的憑證。CA 要他把一個特定的權杖檔上傳到網站;一旦確認檔案在那裡(證明對網域的控制),就簽發一張簽署過的憑證。現在每個已經信任那個 CA 的訪客瀏覽器,都會信任這個部落格的公鑰。
先驗證控制權再簽署——信任從少數幾個根流出。
CA 是單一信任點,因而也是單一失效點。一個被入侵或粗心的 CA 能為任何網站簽發看起來有效的憑證——這就是為什麼會有憑證透明度日誌與撤銷機制。