為什麼佐證網站控管權需要開放國外 IP 連線?

因為多視角簽發佐證(MPIC)的驗證機制規定被驗證網站須能從世界各地都能連線。

多視角簽發佐證(MPIC)驗證機制

網域控管權驗證的核心機制,是 CA 經由網路查驗一個「只有真正的網域持有人才能改動」的東西——一筆 DNS TXT 紀錄,或網站指定路徑下的一個檔案。但 CA 是否能去查東西,取決於 CA 的查詢封包經由哪條路由繞送路徑抵達目標。網際網路的路由繞送由 BGP(邊界閘道協定)決定,而 BGP 沒有內建真實性驗證:只要有人向上層路由宣告「走這個網段到我這裡最近」,就會有一部分網路流量走宣告的路由路徑。

攻擊者若能對 CA 所使用的路由繞送路徑做劫持,則 CA 查到的 TXT 紀錄、讀取到的驗證檔案就會是攻擊者準備的版本,導致網域控管權驗證「通過」。這類劫持通常只會影響部分區域路由路徑,而不是全世界所有到該網站的路由路徑皆遭劫持,所以解決方法是:不要只從一個地方觀測。讓多個位於不同地理位置、不同區域網路上的觀測視角各自獨立驗證網域控管權(與檢查 CAA 紀錄),若結果不一致就不允許簽發憑證。攻擊者如果要同時欺騙分散各地的觀測視角,難度則會高出好幾個量級。

台灣的 CA 與用戶幾乎都在同一個區域,能滿足「彼此相距夠遠」定義的遠端觀測視角幾乎都位於海外,驗證控管權的請求封包自然會來自國外 IP。這不是 CA 的驗證主機設置在國外,而是規範要求須進行全球多視角驗證。(註:實務上 CA 會利用雲端服務商於世界各地的資料中心,設置控管權驗證的虛擬主機滿足 TLS BR 的多視角簽發佐證(MPIC)機制的要求。)

範例

常見問題:申請者把驗證檔案放置於指定路徑、DNS TXT 也設定完成,自己用瀏覽器測試都正常,但申請結果卻一直沒下文。詢問 CA 後,CA的回覆則是——

  1. CA 控管權驗證主機的驗證結果為 SERVFAIL、Timeout:
    • 位於網站主機前面的 WAF 防火牆/CDN 設定地理區域封鎖,只允許來自台灣的 IP 存取網站;
    • 自己架設的 DNS 主機也封鎖了國外 IP 連線;
    • 資安設備把短時間內來自多個陌生海外 IP 的相同請求判定為探測掃描而拒絕連線;
    • 主機本身的防火牆只開放國內網段。
  2. CA 控管權驗證主機的驗證結果為 The quorum requirements were not met :
    • 上述的網站主機與資安設備封鎖部分國外區域的 IP,使遠端網路觀測視角的有效數量無法達到規定門檻要求。

上述的安全政策設定導致國外觀測視角無法讀取驗證資訊,使觀測結果為無效佐證的數量超過 TLS BR 規定的容許值,於是憑證申請遭到拒絕或者受到擱置。

解決方法是申請者在控管權驗證期間短暫開放國外連線,待控管權驗證通過取得憑證後再關閉國外連線;或改用 DNS 驗證方法(自架的 DNS 主機仍須要開放國外連線)。

機制緣由

2018 年 4 月有攻擊者使用 BGP 劫持把 Amazon Route 53 的部分流量導向自己的 DNS 伺服器,讓加密貨幣錢包網站 MyEtherWallet 的訪客連上假網站、趁機竊走加密貨幣。當時訪客還能看到憑證不安全警告察覺網站有問題(攻擊者只能用自簽憑證);但如果攻擊者拿劫持搶來的路由路徑申請憑證,並通過網域控管權驗證、取得一張正式憑證掛在假網站上,則瀏覽器警告就會消失,訪客將無從得知自己已被劫持。多視角簽發佐證(MPIC)就是為了防範這個潛在風險而出現的驗證機制。

《基本要求》的規定

第 3.2.2.9 節的多視角簽發佐證(Multi-Perspective Issuance Corroboration,MPIC)要求:

  • 網域授權或控管權驗證與 CAA 紀錄檢查的判定結果,須由多個遠端網路視角佐證 CA 主要網路視角(Primary Network Perspective)的觀測結果;
  • 網路視角彼此相距至少 500 公里才算相異;所使用的任兩個 DNS 解析器之間的直線距離也應(MUST)至少 500 公里,且解析器須與該觀測視角位於同一個區域網際網路註冊管理機構的服務區域內;
  • 各觀測視角不得(MUST NOT)共用快取或重複使用彼此的結果(避免一個視角的 DNS 快取被污染影響全體);
  • 容許的無效佐證有規定數量上限:使用 2~5 個相異遠端視角觀測時容許 1 個、6 個以上視角觀測時容許 2 個視角做出無效佐證的結果。

哪些控管權驗證方法必須搭配 MPIC,寫在第 3.2.2.4 節與第 3.2.2.5 節各方法的條文裡。