Signed HTTP Exchange

Kinuko Yasuda

Signed HTTP Exchange (或簡稱「SXG」) 是名為「網頁套件」的新興技術之一,可讓發布商以安全的方式將其內容設為可攜權,也就是可讓其他方重新發行內容,同時保有內容的完整性和出處。可攜內容有許多優點,包括能加快內容傳遞速度、讓使用者之間分享內容,以及更簡單的離線體驗。

那麼 Signed HTTP Exchange 如何運作?這項技術可讓發布者簽署單一 HTTP 廣告交易平台 (即要求/回應配對),以便從任何快取伺服器提供 Signed Exchange。瀏覽器載入這個 Signed Exchange 時,可在網址列安全地顯示發布者的網址,因為廣告交易平台中的簽章足以證明內容最初來自發布商的來源。

Signed Exchange:重點

並將內容來源與發布者加以分離。不必使用特定伺服器、連線或代管服務,就能在網路上發布內容!我們期待能夠運用的 SXG 功能如下:

  • 保護隱私權的預先擷取:雖然預先擷取資源 (例如透過連結 rel=prefetch) 進行後續導覽,但瀏覽速度可能會大幅提升,但也具有隱私權方面的缺點。舉例來說,為了跨來源瀏覽預先擷取資源,系統會向目的地網站揭露使用者可能有興趣取得某項資訊,即使使用者最終並未造訪網站也一樣。另一方面,SXG 允許從快速的快取預先擷取跨來源資源,而無需連線到目的地網站,這樣只會在導覽發生時,就向使用者傳達興趣。我們認為這對於目標是要將使用者帶往其他網站的網站 有幫助。尤其是 Google 計劃在 Google 搜尋結果網頁上使用這個標記,以改善 AMP 網址並加快使用者點選搜尋結果的速度。

  • 在不留下憑證私密金鑰控制權的情況下,CD 的優點: 突然變得熱門的內容 (例如從 reddit.com 的第一個網頁建立連結) 通常會造成提供內容的網站超載,而且如果網站規模極小,速度就會變慢,甚至暫時無法使用。如果內容是透過快速、強大的快取伺服器分享,且 SXG 無需共用 TLS 金鑰,就能避免這種情況。

試用 Signed Exchange

Signed Exchange 適用於 Chrome 73 以上版本,先前提供的來源試用服務。

建立 SXG

如要為來源 (身為發布者) 建立 SXG,您需要有憑證金鑰來簽署簽名,且憑證必須具備特殊的「CanSignHttpExchanges」擴充功能,才能做為有效的 SXG 處理。自 2018 年 11 月起,DigiCert 是唯一支援這項擴充功能的 CA,您可以透過這個頁面要求 SXG 適用的憑證。

取得 SXG 憑證後,您可以使用 GitHub 上發布的參照產生器工具自行建立 SXG。

您也可以在 Chrome 的程式碼存放區中查看實際的 SXG 範例檔案 (例如,這個範例是為簡單的文字檔案所建立,最簡單的範例)。請注意,這些憑證主要用於本機測試,因此簽名中不應包含有效的憑證和時間戳記。

在本機測試功能

為建立測試用的 SXG,您可以建立自行簽署的憑證並啟用 chrome://flags/#allow-sxg-certs-without-extension,讓 Chrome 處理使用憑證建立的 SXG (沒有特殊擴充功能)。

如果您的伺服器、憑證和 SXG 已正確設定,應該就能運作類似下列程式碼:

<!-- prefetch the sample.sxg -->
<link rel="prefetch" href="https://your-site.com/sample.sxg" />

<!-- clicking the link below should make Chrome navigate to the inner
     response of sample.sxg (and the prefetched SXG is used) -->
<a href="https://your-site.com/sample.sxg">Sample</a>

請注意,在 Chrome 73 以上版本中,錨定標記 (<a>) 和 link rel=prefetch 才支援 SXG。另請注意,簽章的有效性有按照規格限制為 7 天,因此已簽署的內容很快就會過期。

提供意見

我們很樂意聆聽您對這項實驗的意見回饋,網址為:webpackage-dev@chromium.org。您也可以參與規格討論,或是向團隊回報 Chrome 錯誤。您的意見將大力協助標準化程序 也有助我們解決導入問題

意見回饋: