Let's Encrypt是Cloudflare用于頒發(fā)TLS證書(shū)的一家公開(kāi)可信的證書(shū)頒發(fā)機(jī)構(gòu)(CA)。它一直依賴于兩個(gè)不同的證書(shū)鏈:一個(gè)使用IdenTrust提供的根證書(shū)進(jìn)行交叉簽名,是誕生自2000年的一家全球可信CA;另一個(gè)則使用Let's Encrypt自己的根證書(shū),也就是ISRG Root X1。自Let's Encrypt推出以來(lái),ISRG Root X1的設(shè)備兼容性一直在穩(wěn)步提升。
Let's Encrypt與IdenTrust簽訂的交叉簽名證書(shū)鏈協(xié)議將于2024年9月30日到期。在此之后,服務(wù)器將無(wú)法再提供通過(guò)交叉簽名鏈簽名的證書(shū)。所有Let's Encrypt證書(shū)都將改為使用ISRG Root X1 CA。
2016年之后發(fā)布的大多數(shù)設(shè)備和瀏覽器版本不會(huì)因這一變更而遇到任何問(wèn)題,因?yàn)檫@些客戶端的信任存儲(chǔ)中已安裝ISRG Root X1。這些現(xiàn)代瀏覽器和操作系統(tǒng)的設(shè)計(jì)目標(biāo)是保持敏捷性和靈活性,且擁有可升級(jí)的信任存儲(chǔ),完成更新后即可添加新的證書(shū)頒發(fā)機(jī)構(gòu)。
證書(shū)鏈變更將會(huì)影響舊設(shè)備和系統(tǒng),例如運(yùn)行Android版本7.1.1(2016年發(fā)布)或更早版本的設(shè)備,因?yàn)檫@些設(shè)備完全依賴于交叉簽名鏈,并且其信任存儲(chǔ)中缺少ISRG Root X1。這些客戶端在訪問(wèn)由Let's Encrypt證書(shū)提供保護(hù)的域時(shí),將會(huì)收到TLS錯(cuò)誤或警告。我們自己查看了數(shù)據(jù),發(fā)現(xiàn)所有Android請(qǐng)求中占2.96%的請(qǐng)求來(lái)自將會(huì)受到這一變更影響的設(shè)備。這意味著,很大一部分流量將無(wú)法訪問(wèn)互聯(lián)網(wǎng)。我們致力于讓這部分用戶保持在線,并將修改證書(shū)管道以便可以繼續(xù)為使用舊設(shè)備的用戶提供服務(wù),而無(wú)需客戶進(jìn)行任何手動(dòng)修改。
為所有人構(gòu)建更好的互聯(lián)網(wǎng)
過(guò)去,Cloudflare展開(kāi)了一項(xiàng)名為“不讓任何一個(gè)瀏覽器掉隊(duì)”的號(hào)召,幫助確保在基于SHA-1的算法遭到棄用時(shí),我們能夠繼續(xù)為客戶端提供支持。現(xiàn)在,我們將采用同樣的方法應(yīng)對(duì)即將到來(lái)的Let's Encrypt變更。
我們已決定從Cloudflare將Let's Encrypt指定為證書(shū)頒發(fā)機(jī)構(gòu)的所有流程中移除此CA,這將會(huì)影響到使用Universal SSL的客戶以及在“默認(rèn)CA”中選擇SSL for SaaS的客戶。
從2024年6月開(kāi)始,在交叉簽名鏈到期之前的一個(gè)證書(shū)生命周期(90天),Cloudflare就開(kāi)始遷移需要續(xù)訂的Let's Encrypt證書(shū),改為使用其他CA,以確保與受變更影響的舊設(shè)備兼容。也就是說(shuō),以后客戶在明確請(qǐng)求將Let’s Encrypt作為CA時(shí)才會(huì)收到Let's Encrypt證書(shū)。
Let's Encrypt所做的更改是必要的。為了推動(dòng)對(duì)新標(biāo)準(zhǔn)和協(xié)議的支持,我們需要提高公鑰基礎(chǔ)設(shè)施(PKI)生態(tài)系統(tǒng)的敏捷性。通過(guò)淘汰交叉簽名鏈,Let's Encrypt將推動(dòng)設(shè)備、瀏覽器和客戶端支持自適應(yīng)信任存儲(chǔ)。
不過(guò),根據(jù)我們對(duì)過(guò)去類似變更的觀察,這一方面會(huì)推動(dòng)采用新標(biāo)準(zhǔn),但另一方面會(huì)對(duì)經(jīng)濟(jì)落后地區(qū)的用戶產(chǎn)生很大的影響,這些地區(qū)獲得新技術(shù)的機(jī)會(huì)比較有限。
Cloudflare的使命是幫助構(gòu)建更好的互聯(lián)網(wǎng),這意味著為全球用戶提供支持。我們之前發(fā)布了一篇關(guān)于Let's Encrypt證書(shū)鏈變更的博客文章,提醒客戶如果認(rèn)為會(huì)受到這一變更的影響,就要換用證書(shū)頒發(fā)機(jī)構(gòu)。不過(guò),確定這一變更帶來(lái)的影響并非易事。因信任存儲(chǔ)不兼容導(dǎo)致的錯(cuò)誤率主要記錄在客戶端上,這降低了域所有者的可見(jiàn)性。此外,雖然當(dāng)下可能沒(méi)有來(lái)自不兼容設(shè)備發(fā)來(lái)的請(qǐng)求,但這并不能保證未來(lái)用戶的訪問(wèn)不會(huì)中斷。
Cloudflare證書(shū)管道經(jīng)過(guò)多年的發(fā)展已兼具韌性和靈活性,讓我們能夠順利地適應(yīng)此類變更,且不會(huì)對(duì)客戶產(chǎn)生任何負(fù)面影響。
Cloudflare如何構(gòu)建強(qiáng)大的TLS證書(shū)管道
如今,Cloudflare代表客戶管理著數(shù)千萬(wàn)個(gè)證書(shū)。對(duì)我們來(lái)說(shuō),成功的證書(shū)管道意味著:
1.客戶始終可以獲得所需域的TLS證書(shū)
2.CA相關(guān)問(wèn)題不會(huì)影響客戶獲取證書(shū)的能力
3.采用最佳安全實(shí)踐和現(xiàn)代標(biāo)準(zhǔn)
4.持續(xù)優(yōu)化,以備未來(lái)擴(kuò)展
5.為一系列客戶端和設(shè)備提供支持
每年,Cloudflare都會(huì)在證書(shū)管道中推出新增的優(yōu)化功能,以維持最高水平的服務(wù)。我們的做法如下……
-確??蛻羰冀K可以獲得所需域的TLS證書(shū)
自2014年推出Universal SSL以來(lái),Cloudflare一直負(fù)責(zé)為受我們網(wǎng)絡(luò)保護(hù)的每個(gè)域頒發(fā)和提供TLS證書(shū)。這看似微不足道,但必須成功執(zhí)行幾個(gè)步驟才能使域接收證書(shū):
1.域所有者需要為每次證書(shū)頒發(fā)和續(xù)訂完成域控制驗(yàn)證。
2.證書(shū)頒發(fā)機(jī)構(gòu)需要驗(yàn)證用于頒發(fā)證書(shū)的域控制驗(yàn)證令牌。
3.需要檢查CAA記錄,它規(guī)定了哪些CA可用于域,確保只有已獲授權(quán)的CA才能頒發(fā)證書(shū)。
4.證書(shū)頒發(fā)機(jī)構(gòu)必須可用,才能頒發(fā)證書(shū)。
上述每個(gè)步驟都需要多方協(xié)調(diào),包括域所有者、CDN以及證書(shū)頒發(fā)機(jī)構(gòu)。Cloudflare希望能夠掌控自己平臺(tái)的成功。這就是我們將確保成功完成上述每個(gè)步驟作為自己職責(zé)的原因。
我們確保每次客戶只需付出最少的努力即可完成證書(shū)頒發(fā)和續(xù)訂。要獲得證書(shū),域所有者必須完成域控制驗(yàn)證(DCV),證明它確實(shí)擁有該域。發(fā)起證書(shū)請(qǐng)求后,CA將會(huì)返回DCV令牌,域所有者需要將此令牌放入DNS記錄或HTTP令牌中。如果您使用Cloudflare作為DNS服務(wù)提供商,Cloudflare將代表您完成DCV添加,自動(dòng)將CA返回的TXT令牌放入您的DNS記錄中。或者,如果您使用外部DNS服務(wù)提供商,我們提供將DCV委托給Cloudflare的選項(xiàng),可實(shí)現(xiàn)自動(dòng)續(xù)訂,無(wú)需任何客戶干預(yù)。
放入DCV令牌之后,證書(shū)頒發(fā)機(jī)構(gòu)(CA)開(kāi)始驗(yàn)證。CA從多個(gè)有利位置進(jìn)行驗(yàn)證以防范欺騙行徑。不過(guò),由于這些檢查是從多個(gè)國(guó)家/地區(qū)和自治系統(tǒng)(ASN)完成,可能會(huì)觸發(fā)Cloudflare WAF規(guī)則,導(dǎo)致DCV檢查遭到阻止。我們確保及時(shí)更新WAF和安全引擎,用于識(shí)別CA發(fā)出的這些請(qǐng)求,從而確保檢查請(qǐng)求永遠(yuǎn)不會(huì)遭到阻止,成功完成DCV。
由于內(nèi)部要求或合規(guī)規(guī)定,某些客戶擁有CA首選項(xiàng)。為防止未經(jīng)授權(quán)的CA為域頒發(fā)證書(shū),域所有者可以創(chuàng)建證書(shū)頒發(fā)機(jī)構(gòu)授權(quán)(CAA)DNS記錄,指定允許哪些CA為該域頒發(fā)證書(shū)。為確??蛻羰冀K可以獲得證書(shū),Cloudflare會(huì)在請(qǐng)求證書(shū)之前檢查CAA記錄,了解應(yīng)該使用哪些CA。如果CAA記錄阻止了Cloudflare管道中可用的所有CA且客戶沒(méi)有從其首選的CA上傳證書(shū),那么Cloudflare會(huì)代表客戶添加CAA記錄,確保其可以獲得頒發(fā)的證書(shū)。我們會(huì)盡可能優(yōu)化對(duì)客戶首選CA的支持。否則,就需要我們通過(guò)確保域始終擁有可用的TLS證書(shū)來(lái)防止服務(wù)中斷,即使證書(shū)不是由客戶首選CA頒發(fā)。
如今,Cloudflare不是一家公開(kāi)可信的證書(shū)頒發(fā)機(jī)構(gòu)。因此,我們依賴于選用的CA來(lái)實(shí)現(xiàn)高可用性。但是,100%正常運(yùn)行是不切實(shí)際的期望。相反,Cloudflare證書(shū)管道需要做好準(zhǔn)備,以防CA不可用。
-確保與CA相關(guān)的問(wèn)題不會(huì)影響客戶獲取證書(shū)的能力
Cloudflare喜歡未雨綢繆,即防患于未然。CA不可用的情況并不少見(jiàn),有時(shí)是因?yàn)閿嚯姽收?,但更常?jiàn)的原因是CA設(shè)置了頻繁的維護(hù)期,在此期間會(huì)在一段時(shí)間變得不可用。
Cloudflare的職責(zé)是確保CA冗余,這正是我們總是準(zhǔn)備好多個(gè)CA用于頒發(fā)證書(shū)的原因,從而一直確保高可用性。如果您發(fā)現(xiàn)其他CA頒發(fā)Universal SSL證書(shū),這是有意為之。我們?cè)诙鄠€(gè)CA之間平均分配負(fù)載,以免出現(xiàn)單點(diǎn)故障。此外,我們會(huì)密切關(guān)注延遲和錯(cuò)誤率,以便檢測(cè)問(wèn)題并自動(dòng)切換到其他可用且性能良好的CA。您可能有所不知,其中一個(gè)CA每月大約有4個(gè)計(jì)劃的維護(hù)期。在進(jìn)行維護(hù)時(shí),Cloudflare自動(dòng)化系統(tǒng)會(huì)無(wú)縫啟動(dòng),確保一切順利運(yùn)行。這種做法非常有效,無(wú)需再呼叫內(nèi)部團(tuán)隊(duì),因?yàn)橐磺芯_\(yùn)行。
-采用最佳安全實(shí)踐和現(xiàn)代標(biāo)準(zhǔn)
安全性一直是并將繼續(xù)是Cloudflare的首要任務(wù)。因此,維持最高標(biāo)準(zhǔn)來(lái)保護(hù)客戶的數(shù)據(jù)和私鑰安全至關(guān)重要。
過(guò)去十多年來(lái),CA/瀏覽器論壇主張將證書(shū)有效期從5年縮短至90天,并以此作為行業(yè)規(guī)范。這種轉(zhuǎn)變有助于最大限度地降低密鑰泄露風(fēng)險(xiǎn)。當(dāng)證書(shū)每90天更新一次時(shí),其私鑰僅在該期限內(nèi)依舊有效,從而縮短了不良行為者利用泄露的密鑰資料的窗口期。
我們完全接受這一變化,并且已將90天作為默認(rèn)的證書(shū)有效期。通過(guò)確保定期輪換密鑰,增強(qiáng)安全態(tài)勢(shì);促使我們開(kāi)發(fā)“DCV委托”之類的工具,推動(dòng)頻繁續(xù)訂證書(shū)的自動(dòng)化,且不增加開(kāi)銷。這使我們能夠?yàn)橄M哳l率輪換私鑰的客戶提供有效期短至兩周的證書(shū),同時(shí)客戶不必?fù)?dān)心會(huì)導(dǎo)致證書(shū)續(xù)訂失敗。
Cloudflare一直處于采用新協(xié)議和標(biāo)準(zhǔn)的前沿。眾所周知,Cloudflare支持一種新協(xié)議后,其采用率就會(huì)飆升。本月,我們將添加對(duì)Google Trust Services頒發(fā)的ECDSA證書(shū)的支持。使用ECDSA,您可以獲得與RSA相同的安全級(jí)別,但密鑰更小。較小的密鑰意味著更小的證書(shū)以及更少的數(shù)據(jù)來(lái)建立TLS連接,從而加快連接速度并縮短加載時(shí)間。
-持續(xù)優(yōu)化,以備未來(lái)擴(kuò)展
如今,Cloudflare每天頒發(fā)近100萬(wàn)個(gè)證書(shū)。隨著最近縮短證書(shū)有效期的轉(zhuǎn)變,我們將繼續(xù)改進(jìn)密鑰管道,提高穩(wěn)健性。但是,即便Cloudflare管道可以處理大量工作負(fù)載,我們?nèi)匀恍枰蕾嘋A與我們一起擴(kuò)展。每集成一個(gè)CA,我們就會(huì)立即成為他們最大的客戶之一。我們要求CA堅(jiān)持高標(biāo)準(zhǔn),并推動(dòng)他們改善基礎(chǔ)設(shè)施以擴(kuò)大規(guī)模。通過(guò)要求CA處理更多的證書(shū)頒發(fā)請(qǐng)求,這不僅有利于Cloudflare的客戶,而且還有助于維持互聯(lián)網(wǎng)訪問(wèn)。
現(xiàn)在,鑒于Let's Encrypt縮短了其信任鏈,Cloudflare將為證書(shū)管道添加額外的改進(jìn)措施,確保為所有用戶提供最佳設(shè)備兼容性。
-支持所有客戶端,包括舊客戶端和現(xiàn)代客戶端
即將到來(lái)的Let's Encrypt變更,將使舊設(shè)備無(wú)法向受到Let's Encrypt證書(shū)保護(hù)的域或應(yīng)用程序發(fā)出請(qǐng)求。Cloudflare不希望切斷來(lái)自世界任何地方的互聯(lián)網(wǎng)訪問(wèn),也就是說(shuō),雖然這項(xiàng)變更即將生效,但我們會(huì)繼續(xù)努力為客戶提供最佳的設(shè)備兼容性。
得益于最近的所有增強(qiáng)功能,Cloudflare能夠減輕對(duì)Let's Encrypt的依賴,同時(shí)不影響證書(shū)管道的可靠性或服務(wù)質(zhì)量。在變更生效之前的一個(gè)證書(shū)生命周期(90天),我們會(huì)開(kāi)始轉(zhuǎn)向要求證書(shū)改用其他CA,也就是與受影響的設(shè)備兼容的CA。如此一來(lái),我們將緩解變更帶來(lái)的影響,無(wú)需客戶采取任何行動(dòng)。只有專門選擇了Let's Encrypt作為CA的客戶,才會(huì)繼續(xù)使用Let's Encrypt。
即將到來(lái)的Let's Encrypt變更可能會(huì)發(fā)生的情況
Let's Encrypt的交叉簽名鏈將于2024年9月30日到期。雖然Let's Encrypt計(jì)劃于2024年6月6日就停止從交叉簽名鏈頒發(fā)證書(shū),但是Cloudflare會(huì)繼續(xù)為所有Let's Encrypt證書(shū)提供交叉簽名鏈,直到2024年9月9日為止。
在變更生效之前的90天或一個(gè)證書(shū)生命周期,Cloudflare會(huì)開(kāi)始將Let's Encrypt證書(shū)轉(zhuǎn)換為使用其他證書(shū)頒發(fā)機(jī)構(gòu)。我們將對(duì)Cloudflare負(fù)責(zé)CA選擇的所有產(chǎn)品實(shí)施這一變更,也就是說(shuō),會(huì)為使用Universal SSL的客戶以及在“默認(rèn)CA”中選擇SSL for SaaS的客戶自動(dòng)完成此項(xiàng)變更。
所有專門選擇Let's Encrypt作為其CA的客戶,都會(huì)收到一封電子郵件通知,其中包含其Let's Encrypt證書(shū)列表,以及關(guān)于Cloudflare是否可以看到從舊設(shè)備發(fā)出對(duì)這些主機(jī)名的請(qǐng)求的信息。
2024年9月9日之后,Cloudflare將使用ISRG Root X1證書(shū)鏈為所有Let's Encrypt證書(shū)提供服務(wù)。根據(jù)所使用的證書(shū)產(chǎn)品,您可能會(huì)遇到以下情況:
Universal SSL
對(duì)于Universal SSL,Cloudflare會(huì)選擇用于頒發(fā)域證書(shū)的CA,這讓我們能夠?yàn)榭蛻暨x擇最佳證書(shū)。如果您使用Universal SSL,則無(wú)需進(jìn)行任何更改來(lái)為此變更做好準(zhǔn)備。Cloudflare會(huì)自動(dòng)將您的證書(shū)轉(zhuǎn)換為使用某個(gè)更兼容的CA。
高級(jí)證書(shū)
對(duì)于Advanced Certificate Manager,客戶可以專門選擇其想使用的CA。如果客戶專門選擇將Let's Encrypt作為CA,我們會(huì)尊重這種選擇,因?yàn)榭蛻艨赡苡捎趦?nèi)部要求而專門選擇了這個(gè)CA,或者因?yàn)樗麄円呀?jīng)實(shí)施了證書(shū)鎖定,雖然Cloudflare強(qiáng)烈建議不要這樣做。
如果發(fā)現(xiàn)使用Let's Encrypt頒發(fā)的高級(jí)證書(shū)的域?qū)⑹艿阶兏挠绊?,我們?huì)發(fā)送電子郵件通知,告知這些客戶哪些證書(shū)使用Let's Encrypt作為其CA,以及這些域是否會(huì)接收受到變更影響的客戶端發(fā)來(lái)的請(qǐng)求。客戶則可以根據(jù)郵件中的信息提醒改用其他CA服務(wù)提供商,如果他們選擇這樣做的話。
SSL for SaaS
對(duì)于SSL for SaaS,客戶有兩個(gè)選項(xiàng):一是使用默認(rèn)的CA,也就是Cloudflare選擇的頒發(fā)機(jī)構(gòu);二是指定要使用的CA。
如果您將CA選擇權(quán)交給Cloudflare,我們會(huì)自動(dòng)使用設(shè)備兼容性更高的CA。
如果您為自定義主機(jī)名指定某個(gè)CA,我們會(huì)尊重您的選擇。我們將向SaaS提供商和平臺(tái)發(fā)送電子郵件,告知他們哪些自定義主機(jī)名會(huì)接收舊設(shè)備發(fā)出的請(qǐng)求??蛻魟t需負(fù)責(zé)改用其他CA服務(wù)提供商,如果他們選擇這樣做的話。
自定義證書(shū)
若直接與Let's Encrypt集成并且使用自定義證書(shū)將Let's Encrypt證書(shū)上傳到Cloudflare,則只要您選擇“兼容”或“現(xiàn)代”捆綁方法并在2024年9月9日之前上傳這些證書(shū),您的證書(shū)將會(huì)與交叉簽名鏈捆綁在一起。9月9日之后,我們將會(huì)把所有Let's Encrypt證書(shū)與ISRG Root X1鏈捆綁在一起。我們始終采用“用戶定義的”捆綁方法,為上傳到Cloudflare的證書(shū)鏈提供服務(wù)。如果您使用此方法上傳Let's Encrypt證書(shū),則需要確保在2024年9月30日(也就是CA到期日)之后上傳的證書(shū)均包含正確的證書(shū)鏈。
此外,如果您管理連接到應(yīng)用程序的客戶端,我們建議您更新信任存儲(chǔ)以添加ISRG Root X1。如果您使用證書(shū)鎖定,則請(qǐng)移除或更新鎖定。一般而言,我們不鼓勵(lì)客戶固定自己的證書(shū),因?yàn)檫@種做法通常會(huì)導(dǎo)致在證書(shū)續(xù)訂或CA變更期間出現(xiàn)問(wèn)題。
總結(jié)
互聯(lián)網(wǎng)標(biāo)準(zhǔn)將會(huì)繼續(xù)發(fā)展和完善。在支持和擁抱這些變更的同時(shí),我們也應(yīng)意識(shí)到,我們有責(zé)任確保用戶保持在線,并在不易獲得新技術(shù)的全球各地維持用戶的互聯(lián)網(wǎng)訪問(wèn)。使用Cloudflare服務(wù),您始終可以選擇最適合的應(yīng)用程序設(shè)置。