Signed HTTP Exchange

Kinuko Yasuda

Signed HTTP Exchange 是新兴技术的子集,称为 网络包,可让发布商 安全地构建其内容,使其内容可供其他 各方,同时仍保持内容的完整性和提供方的归属。便携式 内容具有诸多优势,从实现更快的内容分发到 促进用户之间的内容分享,并简化离线体验。

那么,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 是唯一支持此扩展的 CA,您可以请求 适用于 SXG 的 此页面

获得 SXG 证书后,您可以使用 参考生成器工具 发布在 GitHub 上

您还可以在 Chrome 的代码库 (例如这个 是最简单的 简单的文本文件)。 请注意,它们主要用于本地测试,请不要期望 确保它们在签名中具有有效的证书和时间戳。

在本地测试功能

若要创建用于测试的 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>

请注意,只有锚标记 (<a>) 和 link rel=prefetch 支持 SXG (在 Chrome 73 及更高版本中)。另请注意,签名的有效性上限为 7 次 天,所以您的签名内容将会相对较快地过期。

提供反馈

我们热切希望听到您对这项实验的反馈,网址为: webpackage-dev@chromium.org。您可以 也可加入规范讨论, 或报告 Chrome bug 。您的反馈将对标准化流程大有帮助 还能帮助我们解决实施方面的问题

反馈