İmzalanmış HTTP Takasları

Kinuko Yasuda

İmzalı HTTP Değişimi (veya "SXG"), Web Paketleri adlı yeni teknolojinin bir alt kümesidir. Bu teknoloji, yayıncıların içeriklerini güvenli bir şekilde taşınabilir, yani diğer tarafların yeniden dağıtılmaya uygun hale getirmesini, aynı zamanda da içeriğin bütünlüğünü ve ilişkilendirmesini korumalarını sağlar. Taşınabilir içerik, daha hızlı içerik yayınlama, kullanıcılar arasında içerik paylaşımını kolaylaştırma ve daha basit çevrimdışı deneyimler gibi birçok avantaj sunar.

Peki, İmzalanmış HTTP Takası nasıl çalışır? Bu teknoloji, yayıncının imzalı değişim herhangi bir önbelleğe alma sunucusundan sunulabileceği şekilde tek bir HTTP exchange'ini (yani bir istek/yanıt çifti) imzalamasına olanak tanır. Tarayıcı bu İmzalanmış Değişim'i yüklediğinde, adres çubuğunda yayıncının URL'sini güvenli bir şekilde gösterebilir çünkü exchange'deki imza, içeriğin orijinal olarak yayıncının kaynağından geldiğine dair yeterli kanıt sağlar.

İmzalı Takas: Özü

Bu işlem, içeriğin kaynağını dağıtan kişiden ayırır. İçeriğiniz belirli bir sunucuya, bağlantıya veya barındırma hizmetine bağlı kalmadan web'de yayınlanabilir. SXG'nin aşağıdaki gibi olası kullanımları bizi heyecanlandırıyor:

  • Gizliliği korumaya yönelik önceden getirme: Sonraki gezinme için kaynakları (ör. rel=prefetch üzerinden) önceden getirmek gezinmeyi çok daha hızlı kabilse de gizlilik açısından dezavantajları da vardır. Örneğin, kaynaklar arası gezinmeler için kaynakların önceden getirilmesi, hedef siteye, kullanıcı son olarak siteyi ziyaret etmemiş olsa bile kullanıcının potansiyel olarak bir bilgi parçasıyla ilgileneceğini açıklar. Öte yandan SXG, hedef siteye hiç ulaşmadan hızlı bir önbellekten kaynaklar arası kaynakların önceden getirilmesini sağlar. Böylece, yalnızca gezinme gerçekleşirse ve ne zaman gerçekleştiğini gösteren kullanıcı ilgisini bildirir. Bunun, amacı kullanıcılarını başka web sitelerine göndermek olan siteler için yararlı olabileceğine inanıyoruz. Google, özellikle AMP URL'lerini iyileştirmek ve arama sonuçlarındaki tıklamaları hızlandırmak için bunu Google arama sonucu sayfalarında kullanmayı planlıyor.

  • Sertifika özel anahtarınızın kontrolünü zorlamadan CDN'nin avantajları: Aniden popüler hale gelen içerik (ör.reddit.com'un ilk sayfasından bağlantı verilen) genellikle içeriğin sunulduğu siteye aşırı yüklenir.Site nispeten küçükse yavaşlayabilir, hatta geçici olarak kullanılamaz hale gelebilir. İçerik hızlı ve güçlü önbellek sunucuları kullanılarak paylaşılıyorsa ve SXG bunu TLS anahtarlarınızı paylaşmadan mümkün kılıyorsa bu durumun önüne geçebilirsiniz.

İmzalı Değişimleri Deneyin

İmzalı Değişimler Chrome 73 ve sonraki sürümlerde kullanılabilir ve daha önce kaynak denemesi olarak sunulmaktaydı.

SXG'niz oluşturuluyor

Yayıncı olarak kaynağınızda SXG'ler oluşturmak için imzayı imzalayacak bir sertifika anahtarına ve sertifikanın geçerli bir SXG olarak işlenebilmesi için özel bir "CanSignHttpExchanges" uzantısına sahip olması gerekir. Kasım 2018 itibarıyla, DigiCert bu uzantıyı destekleyen tek CA'dır. SXG için çalışan sertifikayı bu sayfadan isteyebilirsiniz.

SXG için sertifika aldıktan sonra, github'da yayınlanan referans oluşturma araçlarını kullanarak kendi SXG'lerinizi oluşturabilirsiniz.

Ayrıca, Chrome’un kod deposundaki asıl SXG örnek dosyalarına da göz atabilirsiniz (ör. bu dosya, basit bir metin dosyası için oluşturulan en basit dosyadır.) Bu dosyaların özellikle yerel test için oluşturulduklarını unutmayın. Bu nedenle, imzalarında geçerli sertifikaların ve zaman damgalarının bulunmasını beklemeyin.

Özelliği Yerel Olarak Test Etme

Test amacıyla SXG'ler oluşturmak için kendinden imzalı bir sertifika oluşturabilir ve chrome://flags/#allow-sxg-certs-without-extension adlı markanın, sertifikayla oluşturulan SXG'leri özel uzantı olmadan Chrome'da işlemesini sağlayabilirsiniz.

Sunucunuz, sertifikanız ve SXG'leriniz doğru ayarlanmışsa aşağıdaki gibi kodlar çalışmalıdır:

<!-- 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'nin Chrome 73 ve sonraki sürümlerde yalnızca bağlantı etiketi (<a>) ve link rel=prefetch tarafından desteklendiğini unutmayın. Ayrıca imzanın geçerlilik süresinin özellik başına 7 günle sınırlı olduğunu, bu nedenle imzaladığınız içeriklerin süresinin nispeten kısa olacağını unutmayın.

Geri Bildirim Verme

Bu denemeyle ilgili geri bildirimlerinizi webpackage-dev@chromium.org adresinden almak isteriz. Ayrıca spesifikasyon tartışmasına katılabilir veya ekibe bir Chrome hatasını bildirebilirsiniz. Geri bildirimleriniz, standartlaştırma sürecine çok yardımcı olacak ve uygulama sorunlarını çözmemize yardımcı olacaktır.

Geri bildirim