Signed HTTP Exchanges

Kinuko Yasuda

Signed HTTP Exchange (atau "SXG") adalah bagian dari teknologi baru yang disebut Paket Web, yang memungkinkan penayang menjadikan konten yang portabel dengan aman, yaitu tersedia untuk didistribusikan ulang oleh pihak lain, sambil tetap menjaga integritas dan atribusi konten. Konten portabel memiliki banyak manfaat, mulai dari memungkinkan pengiriman konten yang lebih cepat hingga memfasilitasi berbagi konten antarpengguna, serta pengalaman offline yang lebih praktis.

Jadi, bagaimana cara kerja Signed HTTP Exchanges? Teknologi ini memungkinkan penayang menandatangani satu pertukaran HTTP (yaitu pasangan permintaan/respons), dengan cara Signed HTTP Exchange dapat disalurkan dari server cache mana pun. Saat browser memuat Signed Exchange ini, browser dapat menampilkan URL penayang dengan aman di kolom URL karena tanda tangan di bursa merupakan bukti yang memadai bahwa konten tersebut berasal dari asal penayang.

Signed HTTP Exchange: Inti

Tindakan ini akan memisahkan asal konten dari siapa yang mendistribusikannya. Konten Anda dapat dipublikasikan di web, tanpa bergantung pada server, koneksi, atau layanan hosting tertentu. Kami sangat senang dengan kemungkinan penggunaan SXG seperti:

  • Pengambilan data yang menjaga privasi: Saat mengambil data resource (misalnya dengan rel=fetch) untuk navigasi berikutnya dapat membuat navigasi terasa jauh lebih cepat, navigasi ini juga memiliki kelemahan privasi. Misalnya, pengambilan data resource untuk navigasi lintas origin akan mengungkapkan ke situs tujuan bahwa pengguna berpotensi tertarik dengan suatu informasi meskipun pengguna pada akhirnya tidak mengunjungi situs tersebut. Di sisi lain, SXG memungkinkan pengambilan data resource lintas origin dari cache cepat tanpa pernah menjangkau situs tujuan, sehingga hanya menyampaikan minat pengguna jika dan saat navigasi terjadi. Kami yakin bahwa hal ini dapat berguna bagi situs yang sasarannya adalah mengarahkan pengguna ke situs web lain. Secara khusus, Google akan menggunakannya di halaman hasil penelusuran Google untuk meningkatkan URL AMP dan mempercepat klik pada hasil penelusuran.

  • Manfaat CDN tanpa menyerahkan kontrol atas kunci pribadi sertifikat Anda: Konten yang tiba-tiba menjadi populer (misalnya, ditautkan dari halaman pertama reddit.com) sering kali membebani situs tempat konten ditayangkan, dan jika situs relatif kecil, konten cenderung melambat atau bahkan tidak tersedia untuk sementara. Situasi ini dapat dihindari jika konten dibagikan menggunakan server cache yang cepat dan canggih, dan SXG memungkinkan hal ini tanpa membagikan kunci TLS Anda.

Mencoba Signed HTTP Exchange

Signed HTTP Exchange tersedia di Chrome 73 dan yang lebih baru, serta sebelumnya tersedia sebagai uji coba origin.

Membuat SXG

Agar dapat membuat SXG untuk origin Anda (sebagai penayang), Anda memerlukan kunci sertifikat untuk menandatangani tanda tangan, dan sertifikat tersebut harus memiliki ekstensi"CanSignHttpExchanges" khusus agar dapat diproses sebagai SXG yang valid. Mulai November 2018, DigiCert adalah satu-satunya CA yang mendukung ekstensi ini, dan Anda dapat meminta sertifikat yang berfungsi untuk SXG dari halaman ini.

Setelah mendapatkan sertifikat untuk SXG, Anda dapat membuat SXG sendiri dengan menggunakan alat generator referensi yang dipublikasikan di github.

Anda juga dapat melihat contoh file SXG yang sebenarnya di repositori kode Chrome (mis. yang ini adalah yang paling sederhana yang dibuat untuk file teks sederhana). Perhatikan bahwa sertifikat ini dibuat terutama untuk pengujian lokal. Jangan berharap bahwa file ini memiliki sertifikat dan stempel waktu yang valid dalam tanda tangan.

Menguji Fitur secara Lokal

Agar dapat membuat SXG untuk tujuan pengujian, Anda dapat membuat sertifikat yang ditandatangani sendiri dan mengaktifkan chrome://flags/#allow-sxg-certs-without-extension agar Chrome memproses SXG yang dibuat dengan sertifikat tersebut tanpa ekstensi khusus.

Kode seperti berikut akan berfungsi jika server, sertifikat, dan SXG Anda disiapkan dengan benar:

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

Perhatikan bahwa SXG hanya didukung oleh tag anchor (<a>) dan link rel=prefetch di Chrome 73 dan yang lebih baru. Perhatikan juga bahwa validitas tanda tangan dibatasi hingga 7 hari per spesifikasi, sehingga masa berlaku konten yang ditandatangani akan relatif cepat habis.

Memberikan Masukan

Kami ingin mendengar masukan Anda mengenai eksperimen ini di webpackage-dev@chromium.org. Anda juga dapat bergabung dalam diskusi spesifikasi, atau melaporkan bug Chrome kepada tim. Masukan Anda akan sangat membantu proses standardisasi dan juga membantu kami mengatasi masalah penerapan.

Masukan