Ondertekende HTTP-uitwisselingen

Kinuko Yasuda

Signed HTTP Exchange (of "SXG") is een subset van de opkomende technologie genaamd Web Packages , die uitgevers in staat stelt hun inhoud veilig draagbaar te maken, dwz beschikbaar te maken voor herdistributie door andere partijen, terwijl de integriteit en toeschrijving van de inhoud behouden blijft. Draagbare inhoud heeft veel voordelen, van het mogelijk maken van een snellere levering van inhoud tot het faciliteren van het delen van inhoud tussen gebruikers en eenvoudigere offline-ervaringen.

Hoe werken ondertekende HTTP-uitwisselingen? Met deze technologie kan een uitgever een enkele HTTP-uitwisseling (dwz een verzoek/antwoord-paar) ondertekenen , op een manier waarop de ondertekende uitwisseling vanaf elke caching-server kan worden bediend. Wanneer de browser deze ondertekende uitwisseling laadt, kan deze veilig de URL van de uitgever in de adresbalk weergeven, omdat de handtekening in de uitwisseling voldoende bewijs is dat de inhoud oorspronkelijk afkomstig is van de oorsprong van de uitgever.

Ondertekende uitwisseling: de essentie

Hierdoor wordt de oorsprong van de inhoud losgekoppeld van wie deze distribueert. Uw inhoud kan op internet worden gepubliceerd, zonder afhankelijk te zijn van een specifieke server, verbinding of hostingservice! We zijn enthousiast over mogelijke toepassingen van SXG, zoals:

  • Prefetchen met behoud van privacy: hoewel het vooraf ophalen van bronnen (bijvoorbeeld via link rel=prefetch ) voor een volgende navigatie ervoor kan zorgen dat de navigatie een stuk sneller aanvoelt, heeft het ook privacynadelen. Als u bijvoorbeeld bronnen vooraf ophaalt voor cross-origin-navigatie, wordt aan de bestemmingssite duidelijk dat de gebruiker mogelijk geïnteresseerd is in een stukje informatie, zelfs als de gebruiker de site uiteindelijk niet heeft bezocht. Aan de andere kant maakt SXG het mogelijk om cross-originele bronnen vooraf op te halen uit een snelle cache zonder ooit de bestemmingssite te bereiken, waardoor de interesse van de gebruiker alleen wordt gecommuniceerd als en wanneer de navigatie plaatsvindt. Wij zijn van mening dat dit nuttig kan zijn voor sites die tot doel hebben hun gebruikers naar andere websites te sturen. Google is met name van plan dit te gebruiken op pagina's met zoekresultaten van Google om AMP-URL's te verbeteren en klikken op zoekresultaten te versnellen.

  • Voordelen van een CDN zonder de controle over de privésleutel van uw certificaat uit handen te geven: Inhoud die plotseling populair is geworden (bijvoorbeeld gelinkt vanaf de eerste pagina van reddit.com ) overbelast vaak de site waar de inhoud wordt aangeboden, en als de site relatief klein is, wordt deze vaak overbelast. heeft de neiging te vertragen of zelfs tijdelijk niet beschikbaar te zijn. Deze situatie kan worden vermeden als de inhoud wordt gedeeld met behulp van snelle, krachtige cacheservers, en SXG maakt dit mogelijk zonder uw TLS-sleutels te delen.

Ondertekende uitwisselingen uitproberen

Signed Exchanges zijn beschikbaar in Chrome 73 en hoger en waren voorheen beschikbaar als originele proefversie.

Uw SXG maken

Om SXG's voor uw oorsprong (als uitgever) te maken, heeft u een certificaatsleutel nodig om de handtekening te ondertekenen, en het certificaat moet een speciale "CanSignHttpExchanges"-extensie hebben om als een geldige SXG te worden verwerkt. Vanaf november 2018 is DigiCert de enige CA die deze extensie ondersteunt, en vanaf deze pagina kunt u het certificaat aanvragen dat voor SXG werkt.

Zodra u een certificaat voor SXG heeft ontvangen, kunt u uw eigen SXG's maken met behulp van de referentiegeneratortools die op github zijn gepubliceerd.

U kunt ook de daadwerkelijke SXG-voorbeeldbestanden bekijken in de coderepository van Chrome ( deze is bijvoorbeeld de eenvoudigste die is gemaakt voor een eenvoudig tekstbestand ). Houd er rekening mee dat ze voornamelijk worden gegenereerd voor lokaal testen. Verwacht niet dat de handtekening geldige certificaten en tijdstempels bevat.

De functie lokaal testen

Als u SXG's voor testdoeleinden wilt maken, kunt u een zelfondertekend certificaat maken en chrome://flags/#allow-sxg-certs-without-extension inschakelen om uw Chrome de SXG's te laten verwerken die met het certificaat zijn gemaakt zonder de speciale extensie.

Code zoals de volgende zou moeten werken als uw server, certificaat en SXG's correct zijn ingesteld:

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

Houd er rekening mee dat SXG alleen wordt ondersteund door de ankertag ( <a> ) en link rel=prefetch in Chrome 73 en hoger. Houd er ook rekening mee dat de geldigheid van de handtekening beperkt is tot zeven dagen per specificatie, zodat uw ondertekende inhoud relatief snel zal verlopen.

Feedback geven

We horen graag uw feedback over dit experiment op webpackage-dev@chromium.org . U kunt ook deelnemen aan de spec-discussie of een Chrome-bug melden aan het team. Uw feedback zal het standaardisatieproces enorm helpen en ons ook helpen bij het aanpakken van implementatieproblemen.

Feedback