Intercambios HTTP firmados

Kinuko Yasuda

El intercambio HTTP firmado (o "SXG") es un subconjunto de la tecnología emergente llamada Paquetes web, que permite a los publicadores hacer que su contenido sea transferible, es decir, disponible para que otros terceros lo redistribuyan, manteniendo la integridad y la atribución del contenido. El contenido transferible tiene muchos beneficios, como permitir una publicación de contenido más rápida, facilitar el intercambio de contenido entre usuarios y experiencias sin conexión más simples.

Entonces, ¿cómo funcionan los intercambios HTTP firmados? Esta tecnología permite que un publicador firme un solo intercambio HTTP (es decir, un par de solicitud/respuesta) de modo que el intercambio firmado se pueda entregar desde cualquier servidor de almacenamiento en caché. Cuando el navegador carga este intercambio firmado, puede mostrar de forma segura la URL del publicador en la barra de direcciones, ya que la firma en el intercambio es una prueba suficiente de que el contenido provino originalmente del origen del publicador.

Intercambio firmado: La esencia

Esto desvincula el origen del contenido de quien lo distribuye. Tu contenido se puede publicar en la Web sin depender de un servidor, una conexión o un servicio de hosting específico. Nos entusiasman los posibles usos de los SXG, como los siguientes:

  • Precarga que preserva la privacidad: Si bien la precarga de recursos (p.ej., por vínculo rel=prefetch) para una navegación posterior puede hacer que la navegación se sienta mucho más rápida, también tiene desventajas en cuanto a la privacidad. Por ejemplo, la carga previa de recursos para las navegaciones entre orígenes revelará al sitio de destino que al usuario le puede interesar una información, incluso si, en última instancia, no visitó el sitio. Por otro lado, los SXG permiten la precarga de recursos de varios orígenes desde una caché rápida sin conectarse al sitio de destino, por lo que solo se comunica el interés del usuario si se produce la navegación. Creemos que esto puede ser útil para los sitios cuyo objetivo es dirigir a los usuarios a otros sitios web. En particular, Google planea usar esto en las páginas de resultados de la Búsqueda de Google para mejorar las URLs de AMP y acelerar los clics en los resultados de la búsqueda.

  • Beneficios de una CDN sin ceder el control de la clave privada de tu certificado: El contenido que se vuelve popular de repente (p.ej., vinculado desde la primera página de reddit.com) suele sobrecargar el sitio en el que se entrega el contenido y, si el sitio es relativamente pequeño, tiende a desacelerarse o incluso a no estar disponible temporalmente. Esta situación se puede evitar si el contenido se comparte con servidores de caché rápidos y potentes, y SXG lo hace posible sin compartir tus claves de TLS.

Prueba los intercambios firmados

Los intercambios firmados están disponibles en Chrome 73 y versiones posteriores, y antes estaban disponibles como una prueba de origen.

Crea tu SXG

Para crear SXG para tu origen (como publicador), necesitas una clave de certificado para firmar la firma, y el certificado debe tener una extensión especial"CanSignHttpExchanges" para que se procese como un SXG válido. A partir de noviembre de 2018, DigiCert es la única AC que admite esta extensión, y puedes solicitar el certificado que funciona para SXG desde esta página.

Una vez que obtengas un certificado para SXG, podrás crear tus propios SXG con las herramientas de generador de referencias publicadas en GitHub.

También puedes consultar los archivos de ejemplo de SXG reales en el repositorio de código de Chrome (p.ej., este es el más simple creado para un archivo de texto simple). Ten en cuenta que se generan principalmente para pruebas locales, por lo que no debes esperar que tengan certificados y marcas de tiempo válidos en la firma.

Prueba la función de forma local

Para crear SXG con fines de prueba, puedes crear un certificado autofirmado y habilitar chrome://flags/#allow-sxg-certs-without-extension para que Chrome procese los SXG creados con el certificado sin la extensión especial.

Un código como el siguiente debería funcionar si tu servidor, certificado y SXG están configurados correctamente:

<!-- 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>

Ten en cuenta que SXG solo es compatible con la etiqueta de ancla (<a>) y link rel=prefetch en Chrome 73 y versiones posteriores. Además, ten en cuenta que la validez de la firma está limitada a 7 días por especificación, por lo que tu contenido firmado vencerá con relativa rapidez.

Cómo enviar comentarios

Nos gustaría conocer tus comentarios sobre este experimento en webpackage-dev@chromium.org. También puedes unírte a la discusión sobre las especificaciones o informar un error de Chrome al equipo. Tus comentarios ayudarán en gran medida al proceso de estandarización y también nos ayudarán a abordar los problemas de implementación.

Comentarios