Intercambios HTTP firmados

Kinuko Yasuda

Intercambio HTTP firmado (o "SXG") es un subconjunto de la tecnología emergente llamada Web Packages, que permite a los publicadores hacer que su contenido sea portátil de forma segura, es decir, que esté disponible para su redistribución por parte de terceros sin dejar de mantener la integridad y atribución del contenido. Portátiles contenido tiene muchos beneficios, desde permitir una entrega más rápida facilitando el uso compartido de contenido entre usuarios y experiencias sin conexión más simples.

¿Cómo funcionan los intercambios HTTP firmados? Esta tecnología permite que un publicador firmar un único intercambio HTTP (es decir, un par de solicitud/respuesta), de la forma en que se puede que se entregan desde cualquier servidor de almacenamiento en caché. Cuando el navegador cargue este intercambio firmado, puede mostrar de forma segura la URL del editor en la barra de direcciones porque la firma en el intercambio es una prueba suficiente de que el contenido provino originalmente de la origen del publicador.

Intercambio firmado: la esencia

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

  • Carga previa que preserva la privacidad: Mientras se realiza una carga previa de los recursos (p.ej., by link rel=prefetch) para una navegación posterior puede hacer que la navegación se sienta mucho más rápida, también tiene desventajas de privacidad. Por ejemplo, cargar previamente los recursos para las navegaciones de origen cruzado divulgarán al sitio de destino que el usuario está potencialmente interesado en un fragmento de información, incluso si el usuario finalmente no visitaron el sitio. Por otro lado, SXG permite realiza una carga previa de los recursos de origen cruzado desde una caché rápida sin llegar a alcanzar redirigen al usuario al sitio de destino, por lo que solo comunican el interés del usuario cuando se realiza la navegación. Creemos que esto puede ser útil para los sitios cuyo objetivo es enviar a sus usuarios a otros sitios web. En particular, Google planea utilizar esta información en las páginas de resultados de la búsqueda de Google para mejorar las URL 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 del certificado: Contenido que se ha vuelto popular de repente (p.ej., vinculado desde la primera página de reddit.com) suele sobrecargar el sitio dónde se entrega el contenido y, si el sitio es relativamente pequeño, frenar o incluso dejar de estar disponibles temporalmente. Esta situación puede ser evitar si el contenido se comparte mediante servidores de caché rápidos y potentes, y SXG hace esto posible sin compartir tus claves TLS.

Prueba de intercambios firmados

Los intercambios firmados están disponibles en Chrome 73 y versiones posteriores; anteriormente, disponible como prueba de origen.

Creando tu SXG

Para crear SXG para tu origen (como publicador), necesitas un clave de certificado para firmar la firma, y el certificado debe tener una "CanSignHttpExchanges" extensión 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 la certificado que funciona para SXG desde esta página.

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

También puedes observar los archivos de ejemplo de SXG reales en la 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 de que tengan certificados y marcas de tiempo válidos en la firma.

Prueba la función de manera local

Para crear SXG con fines de prueba, puedes crear un certificado autofirmado y habilita chrome://flags/#allow-sxg-certs-without-extension para que tenga tu Chrome procesa 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 anclaje (<a>) y link rel=prefetch. en Chrome 73 y versiones posteriores. Además, ten en cuenta que la validez de la firma se limita a 7 días según la especificación, por lo que el contenido firmado vencerá relativamente rápido.

Comentarios

Nos gustaría recibir tus comentarios sobre este experimento en webpackage-dev@chromium.org. Puedes únete al debate sobre especificaciones o informar un error de Chrome para el equipo. Tus comentarios serán muy útiles para el proceso de estandarización y nos ayudan a abordar los problemas de implementación.

Comentarios