我們感到非常自豪 Cloudflare 讓每位客戶都能提供網際網路應用程式的TLS 憑證 — 免費的。我們現在負責管理約 4,500 萬份憑證的生命週期,從發行到部署再到更新。當我們在建立最有彈性和健全的平台時,我們希望能「適應未來」以防禦無法預測的事件。
在發生金鑰外洩、漏洞和大規模撤銷憑證等事件時,我們需要立即為客戶重新發行憑證,否則客戶可能會處於不安全或離線的狀態。當其中一個事件發生時,我們希望能做好準備並立即減少受到的影響。但是該如何做?
準備好可以部署的備份憑證 — 這是由主要憑證的不同授權單位所發行的不同私密金鑰來包裝。
導致重新發行憑證的事件
Cloudflare 每天都會重新發行憑證 — 我們稱之為憑證更新。因為憑證有到期日,所以當 Cloudflare 得知憑證快到期時就會提出憑證更新訂單。在憑證過期時,我們已經部署好更新的憑證來應對 TLS 終止。
很不幸的是,並非每次更新都是憑證到期。有時候,如金鑰外洩等無法預期的事件也要更新憑證。因為發行新密鑰時,其所對應的憑證也需重新發行。
金鑰外洩
金鑰外洩是指未經授權的人或系統取得加解密重要資訊的私密金鑰 — 這是網路安全人員最大的噩夢。金鑰外洩可能來自於如 Heartbleed 等漏洞,這是系統中的一個錯誤並且讓私密金鑰外洩,也可能來自於惡意的行為,如被惡意員工未經授權存取資訊。發生金鑰外洩時,必須採取:(1) 立即發行新的私密金鑰,(2) 部署新的憑證,以及 (3) 撤銷舊的憑證。
Heartbleed 漏洞
2014 年 Heartbleed 漏洞曝光。如果使用受影響的 OpenSSL (熱門加密程式庫) 版本的伺服器,將允許攻擊者擷取其中的 TLS 憑證私密金鑰。雖然我們的密鑰沒有被外洩,但我們馬上修補漏洞,並採取預防措施迅速重新發行所有客戶新的私密金鑰和 TLS 憑證。Cloudflare 的即時處理能力保護了客戶資料未外洩。
Heartbleed 給我們一個警示。當時的 Cloudflare 規模很小。以現在的規模來說,類似的漏洞我們需要幾週而不是幾小時的時間才能重新發行所有客戶的憑證。
現在有了備份憑證,我們就不用擔心要在很短時間內啟動大規模的重新發行。相反的,客戶已經有一個能讓我們立即部署的憑證。不僅如此,備份憑證被包裝在與主要憑證不同的密鑰中,所以它可以不被金鑰外洩所影響。
金鑰外洩是大規模重新發行憑證的主要原因之一。但還有其他事件也需要重新發行,例如:憑證授權單位大規模撤銷憑證。
CA 大規模撤銷
現今的憑證授權單位/瀏覽器論壇 (CA/B Forum) 為制定憑證規則和標準的管理機構。CA/B Forum 基準要求之一是憑證授權單位需在 24 小時內撤銷可能外洩的密鑰憑證。對於不須立即處理的問題,如憑證濫用或違反 CA 的憑證原則,則要在 5 天內撤銷憑證。在這兩種情況下,憑證在很短的時間內就會被 CA 撤銷,所以需要立即重新發行憑證。
雖然大規模撤銷憑證並不常見,但在過去幾年也有發生過幾次。最近 Let's Encrypt 發現他們在實行的 DCV 挑戰不符合規定,因此不得不撤銷約 270 萬份憑證。在這個事件中,Cloudflare 的客戶沒有受到影響。
還有一次,我們一個憑證授權單位發現他們用不符合 CA/B Forum 標準的驗證權杖來更新憑證。導致他們需要啟動大規模撤銷,並影響約五千個 Cloudflare 所管理的網域。我們與客戶和 CA 一起合作,在撤銷之前發行新的憑證,讓影響減到最低。
我們知道發生錯誤,很幸運的是當問題出現時我們的工程團隊能迅速緩解問題,所以客戶沒有受到影響。但這還不夠,我們的系統需要能適應未來的變化讓 4,500 萬份憑證的撤銷不會對客戶產生影響。有了備份憑證,我們已經為大規模重新發行做好準備。
為了預防 CA 發起的大規模撤銷,我們將發行不同於主要憑證的 CA 的備份憑證。如果其中一個 CA 發起大規模撤銷,我們將有多一層的保護 — 這是不定時炸彈。
在更新憑證時,所面臨的挑戰
規模:能力愈大,責任也愈大
當 Heartbleed 漏洞曝光時,我們不得不重新發行約 10 萬份憑證。在當時對 Cloudflare 來說並不是一件難事。現在,我們負責數千萬個憑證。即使我們的系統能夠處理這種規模,我們也須要憑證授權單位夥伴一起處理。在這種緊急情況下,我們不希望依賴無法控制的系統。這就是為什麼我們要提早發行憑證,以便在災難發生時只需部署備份憑證。
人工干預完成 DCV
重新發行憑證的另一個挑戰是網域控制驗證 (DCV)。DCV 是在憑證授權單位發行憑證前驗證網域所有權的檢查。如果客戶使用 Cloudflare,客戶可以委託 Cloudflare 作為他們的 DNS 供應商,或者可以選擇使用 Cloudflare 作為代理,並繼續使用目前的 DNS 供應商。
當 Cloudflare 作為網域的 DNS 供應商時,我們可以代表客戶新增網域控制驗證 (DCV) 記錄。這讓憑證的放行和更新流程更加簡單。
沒有使用 Cloudflare 作為 DNS 供應商的網域 — 我們稱之為_部份區域 (partial zone)_ — 必須使用其他方式來完成 DCV。當這些網域透過我們代理他們的流量,我們可以代表他們完成 HTTP DCV 並從我們的邊緣提供 HTTP DCV 權杖。但如果客戶希望在代理流量前發行憑證,則需要手動完成 DCV。如果 Cloudflare 需要重新發行數千百萬份的憑證,但又無法代表客戶完成 DCV,這會需要人工干預。雖然完成 DCV 不是一項艱鉅的任務,但在緊急的情況下我們不應該依賴客戶來完成,因為應對時間很短且風險很高。
而這就是備份憑證發揮作用的地方。現在開始每個憑證發行都會送出兩個訂單:一個是主要 CA 的憑證,另一個是備份憑證。當我們能夠代表客戶完成 DCV 時,我們會處理這兩個 CA。
我們現在只為有使用 Cloudflare 作為授權 DNS 供應商的網域發行備份憑證。在未來,我們將為部份區域提出備份憑證訂單。這表示對於我們無法完成 DCV 的備份憑證,我們將提供客戶相對應的 DCV 記錄以取得憑證。
備份憑證的部署計劃
我們很高興宣布 Cloudflare 開始為那些使用 Cloudflare 作為授權 DNS 供應商的免費客戶,來部署通用憑證的備份憑證。我們持續地增加備份憑證的訂單數量,在接下來的幾周內,我們希望能在免費、專業或商務帳戶上啟動新的通用憑證訂單,其中包括一個使用不同密鑰所包裝,並與主要憑證不同 CA 所發行的備份憑證。
在 4 月底,我們將開始為企業客戶發行備份憑證。如果您是企業客戶並且對備份憑證有任何疑問,請聯絡我們的客戶團隊。
下一步:所有人的備份憑證
目前通用憑證占我們憑證管道中的 72%。但是我們希望通用憑證能夠涵蓋所有人!這就是為什麼我們的團隊將繼續建造備份憑證管道,以支援進階憑證和用於 SaaS 的 SSLL 憑證。在未來,我們還會替客戶自己上傳的憑證發行備份憑證,這樣客戶也可以有可信賴的備份。
此外,我們將持續改進我們的管道,讓備份憑證的部署更即時 — 讓我們的客戶在緊急情況時也能夠安全上網。Cloudflare 的使命是幫助建立一個更好的網路。透過備份憑證,我們建立更安全、可靠的網路,能為任何災難做好準備。您有興趣幫助我們嗎?我們正在招聘人才。