Signed HTTP Exchange

Kinnuko Yasuda

Signed HTTP Exchange (或稱「SXG」) 是稱為網路套件的新興技術之一,可讓發布者安全地將內容設為可攜性 (例如可供其他方重新分配),同時保留內容的完整性和歸因。可攜式內容有許多優點,包括加快內容傳遞速度、協助使用者之間輕鬆分享內容,以及簡化離線體驗。

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

Signed Exchange:基礎知識

這會分離內容發布者的來源。您不必使用特定伺服器、連線或代管服務,就可以將內容發布到網路上!我們很高興能夠使用 SXG,例如:

  • 隱私保護預先擷取:在預先擷取資源 (例如透過 link rel=prefetch 預訂) 進行後續導覽時,可能會使導覽速度更快,但也缺點是隱私權方面的缺點。舉例來說,針對跨來源導覽的預先擷取資源,將會向目的地網站揭露使用者可能有興趣的資訊,即使最終並未造訪該網站也一樣。另一方面,SXG 可讓您從快速快取預先擷取跨來源資源,無需連線至目的地網站,因此只有在導覽發生時以及何時發生,才會傳達使用者的興趣。我們認為這對於將使用者引導至其他網站的網站 相當實用。具體來說,Google 計劃在 Google 搜尋結果網頁上使用這項技術來改善 AMP 網址,以及加快搜尋結果的點擊速度。

  • CDN 的好處,而不會阻礙憑證私密金鑰的控管:突然變得熱門的內容 (例如,從 reddit.com 的第一頁連結) 經常會在提供內容的網站超載,而且如果網站規模相對較小,通常速度就會降低,甚至暫時無法使用。如果內容是透過快速且強大的快取伺服器分享,則可能會發生這種情況,而 SXG 會在不共用 TLS 金鑰的情況下提供上述功能。

試用 Signed Exchange

Signed Exchange 適用於 Chrome 73 以上版本,先前可做為來源試用。

建立 SXG

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

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

您也可以查看 Chrome 程式碼存放區中的實際 SXG 範例檔案 (例如,這個檔案是建立於簡易文字檔案時最簡單的 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 錯誤。您的意見能幫助我們進行標準化程序 並協助我們解決實作問題

意見回饋