Web 瀏覽器如何使用 HTTPS 或 SVCB DNS 資源記錄 (RR)?

Web 瀏覽器如何使用 HTTPS 或 SVCB DNS 資源記錄 (RR)?

背景

IETF RFC 9460定義SVCBDNSHTTPS資源記錄 (RR),可用於將連線升級到 HTTPS,並指定支援的應用程式層協定 (ALPN)。

2021 年 9 月 7 日,Firefox 92 發布,新增了對 HTTPS RR 的支持:

當可用的 HTTPS RR 可用時,Firefox 會自動將 HTTP 請求升級為 HTTPS。它還將使用 HTTPS RR 中提供的資訊來優化建立 HTTPS 連接的過程,這在概念上類似於使用 Alt-Svc 標頭。 (火狐錯誤 1721132)。

測試

試著用 來測試這一點www.google.com

首先,我嘗試查看它是否有HTTPSRR:

$ dig 8.8.8.8 www.google.com HTTPS

...

;; ANSWER SECTION:
www.google.com.     3358    IN  HTTPS   1 . alpn="h2,h3"

在這裡,我們看到HTTPSRR 確實存在,並且我們注意到 HTTP/3 是由參數h3值表示的支援協定alpn

接下來,嘗試清除作業系統的 DNS 快取。例如,在 Windows 上,我運行了ipconfig /flushdns.在按網址列上的 Enter 之前也執行了此命令,因為 Firefox 和 Chrome(或其他一些進程)似乎在我測試的系統之一上嘗試多次訪問 google.com。

開啟 Firefox v120 並嘗試存取:www.google.com

問題

Firefox v120雖然在v92版本中表示將使用HTTPS RR進行升級和優化,但似乎並沒有要求它。

Wireshark顯示只查詢了A和RR:AAAA

線鯊

可以看到 Firefox 在切換到 HTTP/3 之前首先打開了 HTTP/2 連接,因為Alt-Svc標頭如下:

火狐瀏覽器

實際上,它看起來不像任何(Chrome、IceCat、Edge 等)桌面應用程序,在多個網站上根本要求 RR,HTTPS因為當我在 WireShark 上進行過濾時,dns.qry.type == "HTTPS"dns.qry.type == 65沒有得到任何點擊。只有當我明確通過 進行查找時,我才會得到命中dig

問題

為什麼 RR 似乎HTTPS從未被查詢過?

為了嘗試理解這個問題,我還提出了這些可能有助於找到根本原因的主要問題:

  • 這是預設禁用的功能嗎?
  • 這是否取決於主機設定(除了設定 RR 之外HTTPS)?我讀過的資源沒有顯示需要額外的步驟。
  • 請求 RR 是誰的責任HTTPS?是瀏覽器還是作業系統?到目前為止,我已經在 Guix System 1.4、Windows 10 和 Windows 11 的更新版本以及我上面提到的所有瀏覽器上進行了嘗試。
  • 這取決於硬體嗎?

答案1

我認為這是一個與 Windows 相關的問題,因為 nslookup 不支援 HTTPS 查找,並且它在 win32 內部使用。我認為瀏覽器依賴 win32 函數。如果我在 iPhone 上的 Safari Chrome 或 Firefox 上測試它,它可以完美運行。

相關內容