Trocas de HTTP assinadas

Kinuko Yasuda

Signed HTTP Exchange (ou "SXG") é um subconjunto da tecnologia emergente chamada Com os pacotes da Web, os editores podem tornar seu conteúdo portátil com segurança, ou seja, disponível para redistribuição por outros partes interessadas, mantendo a integridade e a atribuição do conteúdo. Portátil tem muitos benefícios, como a velocidade no envio de conteúdo facilitar o compartilhamento de conteúdo entre os usuários e simplificar as experiências off-line.

Então, como funcionam as Signed HTTP Exchanges? Essa tecnologia permite que um editor assinar uma única troca HTTP (ou seja, um par de solicitação/resposta), da maneira que a troca assinada pode ser exibidas de qualquer servidor de armazenamento em cache. Quando o navegador carrega essa troca assinada, ele poderá mostrar o URL do editor na barra de endereço com segurança porque a assinatura na troca é uma prova suficiente de que o conteúdo veio originalmente origem do editor.

Troca assinada: a essência

Isso separa a origem do conteúdo de quem o distribui. Seu conteúdo podem ser publicados na web, sem depender de um servidor, conexão, ou serviço de hospedagem. Estamos animados com os possíveis usos das SXG, como:

  • Pré-busca com preservação de privacidade:durante a pré-busca de recursos (por exemplo, by link rel=prefetch) para uma navegação posterior pode fazer a navegação parecer muito mais rápida, também tem desvantagens em termos de privacidade. Por exemplo, a pré-busca de recursos para navegações de origem cruzada divulgam ao site de destino que o usuário está potencialmente interessado em uma informação, mesmo que o usuário por fim, não acessaram o site. Por outro lado, SXG permite pré-busca de recursos de origem cruzada a partir de um cache rápido sem nunca alcançar para o site de destino, comunicando o interesse do usuário apenas se e quando a navegação ocorre. Acreditamos que isso pode ser útil para sites cuja meta é direcionar os usuários para outros sites. Especificamente, o Google planeja usar isso nas páginas de resultados de pesquisa do Google para melhorar os URLs de AMP e acelerar os cliques nos resultados da pesquisa.

  • Benefícios de uma CDN sem ceder o controle da chave privada do certificado: Conteúdo que se tornou popular repentinamente (por exemplo, vinculado de a primeira página do reddit.com) geralmente sobrecarrega o site. onde o conteúdo é veiculado. Se o site for relativamente pequeno, ele tende a desacelerar ou até mesmo ficar temporariamente indisponível. Essa situação pode ser devem ser evitados se o conteúdo for compartilhado usando servidores de cache rápidos e potentes e SXG torna isso possível sem compartilhar suas chaves TLS.

Como testar as trocas assinadas

As trocas assinadas estão disponíveis no Chrome 73 e versões mais recentes e disponível como um teste de origem.

Como criar suas SXG

Para criar SXGs para sua origem (como editor), você precisa de uma chave de certificado para assinar a assinatura, e o certificado precisa ter uma extensão "CanSignHttpExchanges" extensão sejam processadas como uma SXG válida. A partir de novembro de 2018, a DigiCert é a única AC compatível com essa extensão, e é possível solicitar certificado que funciona para SXG de nesta página.

Depois de receber um certificado para SXG, você pode criar suas próprias SXGs usando a ferramentas do gerador de referências publicados no GitHub.

Você também pode dar uma olhada nos arquivos de exemplo SXG reais na Repositório de código do Chrome (por exemplo, este é o mais simples criado para um arquivo de texto simples). Eles são gerados principalmente para testes locais. Não espere se eles têm certificados e carimbos de data/hora válidos na assinatura.

Como testar o recurso localmente

Para criar SXGs para fins de teste, você pode criar um certificado autoassinado e ative chrome://flags/#allow-sxg-certs-without-extension para que as O Chrome processa as SXGs criadas com o certificado sem a extensão especial.

Um código como o seguinte deve funcionar se o servidor, certificado e SXGs estão configuradas corretamente:

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

SXG só é compatível com a tag âncora (<a>) e link rel=prefetch no Chrome 73 e posterior. Observe também que a validade da assinatura é limitada a 7 dias por especificação, de modo que o seu conteúdo assinado vai expirar relativamente rápido.

Fornecer feedback

Queremos saber sua opinião sobre esse experimento no webpackage-dev@chromium.org (em inglês). Você pode participe da discussão sobre especificações ou relatório um bug do chrome para a equipe. Seu feedback ajudará muito no processo de padronização além de nos ajudar a resolver problemas de implementação.

Feedback