有沒有辦法製作 Cloudflare API 令牌,使其只能編輯特定*子*網域的記錄?

有沒有辦法製作 Cloudflare API 令牌,使其只能編輯特定*子*網域的記錄?

我希望將 Let's Encrypt 用於多個網域和子網域以及我的公司。我們的目標是使用短期的特定證書,而不是購買安裝在每台電腦上的長期通配符證書。這是為了防止一台機器受到損害時我們的暴露。

不幸的是,有些伺服器不能有任何服務中斷(又稱:沒有 HTTP acme 挑戰的能力)。所以最後的選擇是 DNS 挑戰。這需要我們的 DNS 提供者(在本例中為 Cloudflare)的 API 令牌。

但是,如果我將全域 API 令牌放在電腦上並且它受到損害,攻擊者就可以完全存取我們整個網域的 DNS。這正是我想透過不使用通配符憑證來緩解的問題。

Cloudflare 允許您建立特權較低的令牌,但它們不會比每個根級別域更細化。同樣,與通配符證書本質上相同的存取/關注。

有人想出解決這個問題的方法嗎?

答案1

我過去針對此要求採取的方法,以及我所採用的方法相信受到 Let's Encrypt 文件的祝福,是將_acme-challenge您希望驗證的名稱的子網域 CNAME 為一個或多個其他區域中的名稱,這些區域具有不同的存取控製配置。

例如,如果您希望允許某些服務僅為 產生證書bobservice.example.com,您可以為其他網域(例如 )建立單獨的區域,bobservice.example然後 CNAME_acme-challenge.bobservice.com_acme-challenge.bobservice.example。然後,質詢令牌將被放置在 上的 TXT 記錄中_acme-challenge.bobservice.example,LE 位於 CNAME 後面,並且名稱將得到驗證。

當然,另一種選擇是完全放棄使用 Cloudflare,因為他們的服務缺乏有用的功能,例如有限範圍的憑證,而且還有他們向網路渣滓提供服務的微小問題。

答案2

不幸的是,有些伺服器不能有任何服務中斷(又稱:沒有 HTTP acme 挑戰的能力)。所以最後的選擇是 DNS 挑戰。

對於您的場景,還有另一種選擇,網站根目錄插件。這允許您告訴 Let's Encrypt 用戶端伺服器 Web 根目錄的路徑,它會將 HTTP 質詢檔案放在那裡。這種方法根本不會幹擾您的網路伺服器,並且不會導致停機。

答案3

我的解決方案是建立位於內部網路上的服務,該服務完全鎖定,並持有全域 API 金鑰。本服務將使用此金鑰為各個子網域建立/續訂憑證。依賴子網域憑證的伺服器將擁有一個每個網域的令牌,它們可以針對此內部服務頒發以檢索新的或更新的憑證。

相關內容