Signed HTTP Exchanges

Kinuko Yasuda

Signed HTTP Exchange (atau "SXG") adalah bagian dari teknologi baru yang disebut Paket Web, yang memungkinkan penayang membuat kontennya menjadi portabel dengan aman, yaitu tersedia untuk didistribusikan kembali oleh pihak ketiga, sambil tetap menjaga integritas dan pengaitan konten. Portabel memiliki banyak manfaat, mulai dari memungkinkan pengiriman konten yang lebih cepat hingga memfasilitasi berbagi konten antarpengguna, dan pengalaman offline yang lebih sederhana.

Jadi, bagaimana cara kerja {i> Signed HTTP Exchanges<i}? Teknologi ini memungkinkan penerbit menandatangani pertukaran HTTP tunggal (yaitu, pasangan permintaan/respons), dengan cara yang memungkinkan pertukaran bertanda tangan yang disalurkan dari server {i>caching <i}mana pun. Saat browser memuat {i> Signed Exchange<i} ini, URL penayang dapat ditampilkan dengan aman di kolom URL karena tanda tangan tersebut sebagai imbalannya adalah bukti yang memadai bahwa konten tersebut awalnya berasal dari asal penerbit.

Signed HTTP Exchange: Intinya

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

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

  • Manfaat CDN tanpa menyerahkan kontrol kunci pribadi sertifikat Anda: Konten yang tiba-tiba menjadi populer (misalnya, ditautkan dari halaman pertama reddit.com) sering kali membebani situs tempat konten disajikan, dan jika situsnya relatif kecil, konten tersebut cenderung untuk memperlambat atau bahkan menjadi tidak tersedia untuk sementara. Situasi ini dapat dihindari jika konten dibagikan menggunakan server cache yang cepat dan kuat, serta hal ini dapat dilakukan tanpa perlu 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

Guna membuat SXG untuk origin Anda (sebagai penayang), Anda memerlukan untuk menandatangani, dan sertifikat harus memiliki "CanSignHttpExchanges" ekstensi untuk diproses sebagai SXG yang valid. Per November 2018, DigiCert adalah satu-satunya CA yang mendukung ekstensi ini, dan Anda dapat meminta izin sertifikat yang berlaku untuk SXG dari halaman ini.

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

Anda juga dapat melihat file contoh SXG yang sebenarnya di Repositori kode Chrome (mis. yang ini adalah cara yang paling sederhana yang dibuat untuk file teks sederhana). Perhatikan bahwa parameter tersebut dibuat terutama untuk pengujian lokal, harap jangan bahwa mereka memiliki sertifikat dan stempel waktu yang valid dalam tanda tangan.

Menguji Fitur secara Lokal

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

Kode seperti berikut ini akan berfungsi jika server, sertifikat, dan SXG Anda telah 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, jadi konten yang ditandatangani akan kedaluwarsa dalam waktu singkat.

Memberikan Masukan

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

Masukan