صرافی های HTTP امضا شده

Kinuko Yasuda

Signed HTTP Exchange (یا "SXG") زیرمجموعه‌ای از فناوری نوظهور به نام بسته‌های وب است که به ناشران این امکان را می‌دهد تا محتوای خود را با خیال راحت قابل حمل، یعنی برای توزیع مجدد توسط سایر طرف‌ها در دسترس قرار دهند، در حالی که همچنان یکپارچگی و انتساب محتوا را حفظ می‌کنند. محتوای قابل حمل فواید زیادی دارد، از امکان تحویل سریعتر محتوا گرفته تا تسهیل اشتراک گذاری محتوا بین کاربران و تجربه های آفلاین ساده تر.

بنابراین، صرافی های HTTP امضا شده چگونه کار می کنند؟ این فناوری به یک ناشر اجازه می‌دهد تا یک تبادل HTTP (یعنی یک جفت درخواست/پاسخ) را امضا کند ، به گونه‌ای که تبادل امضا شده می‌تواند از هر سرور ذخیره‌سازی ارائه شود. وقتی مرورگر این Signed Exchange را بارگیری می‌کند، می‌تواند با خیال راحت نشانی اینترنتی ناشر را در نوار آدرس نشان دهد، زیرا امضای موجود در صرافی دلیل کافی است مبنی بر اینکه محتوا در اصل از مبدأ ناشر آمده است.

بورس امضا شده: ذات

این موضوع منشأ محتوا را از کسی که آن را توزیع می کند جدا می کند. محتوای شما را می توان بدون اتکا به سرور، اتصال یا سرویس میزبانی خاص در وب منتشر کرد! ما در مورد استفاده های احتمالی از SXG مانند:

  • واکشی اولیه با حفظ حریم خصوصی: در حالی که واکشی اولیه منابع (مثلاً با پیوند rel=prefetch ) برای پیمایش بعدی می‌تواند باعث شود که پیمایش سریع‌تر شود، اما جنبه‌های منفی نیز در حفظ حریم خصوصی دارد. به عنوان مثال، واکشی اولیه منابع برای ناوبری های متقاطع به سایت مقصد نشان می دهد که کاربر به طور بالقوه به بخشی از اطلاعات علاقه مند است حتی اگر کاربر در نهایت از سایت بازدید نکرده باشد. از سوی دیگر، SXG امکان واکشی اولیه منابع متقاطع را از یک حافظه پنهان سریع بدون دسترسی به سایت مقصد فراهم می‌کند، در نتیجه تنها در صورت و زمانی که ناوبری رخ دهد، علاقه کاربر را در میان می‌گذارد. ما معتقدیم که این می تواند برای سایت هایی که هدفشان فرستادن کاربران خود به وب سایت های دیگر است مفید باشد. به طور خاص، گوگل قصد دارد از آن در صفحات نتایج جستجوی گوگل برای بهبود URL های AMP و افزایش سرعت کلیک روی نتایج جستجو استفاده کند.

  • مزایای CDN بدون واگذاری کنترل کلید خصوصی گواهی شما: محتوایی که به طور ناگهانی محبوب شده است (مثلاً از صفحه اول reddit.com پیوند داده شده است) اغلب سایتی را که محتوا در آن ارائه می شود بیش از حد بارگذاری می کند، و اگر سایت نسبتاً کوچک باشد، آن را افزایش می دهد. تمایل به کاهش سرعت دارد یا حتی به طور موقت در دسترس نیست. اگر محتوا با استفاده از سرورهای کش سریع و قدرتمند به اشتراک گذاشته شود، می توان از این وضعیت جلوگیری کرد و SXG این امکان را بدون اشتراک گذاری کلیدهای TLS شما فراهم می کند.

در حال امتحان صرافی های امضا شده

Signed Exchange در Chrome 73 و جدیدتر موجود است و قبلاً به‌عنوان نسخه آزمایشی اصلی در دسترس بود.

ایجاد SXG شما

به منظور ایجاد SXG برای مبدا خود (به عنوان یک ناشر)، به یک کلید گواهی برای امضای امضا نیاز دارید، و گواهی باید دارای پسوند ویژه "CanSignHttpExchanges" باشد تا به عنوان یک SXG معتبر پردازش شود. از نوامبر 2018، DigiCert تنها CA است که از این افزونه پشتیبانی می‌کند، و می‌توانید گواهی‌ای را که برای SXG کار می‌کند از این صفحه درخواست کنید.

پس از دریافت گواهی برای SXG، می توانید SXG های خود را با استفاده از ابزارهای تولید کننده مرجع منتشر شده در github ایجاد کنید.

همچنین می‌توانید به فایل‌های نمونه واقعی SXG در مخزن کد Chrome نگاهی بیندازید (به عنوان مثال این یکی ساده‌ترین فایلی است که برای یک فایل متنی ساده ایجاد شده است). توجه داشته باشید که آنها عمدتاً برای آزمایش محلی تولید می شوند، لطفاً انتظار نداشته باشید که گواهینامه ها و مهرهای زمانی معتبر در امضا داشته باشند.

تست کردن ویژگی به صورت محلی

برای ایجاد SXG برای اهداف آزمایشی، می‌توانید یک گواهی خودامضا ایجاد کنید و chrome://flags/#allow-sxg-certs-without-extension فعال کنید تا Chrome شما SXG‌های ایجاد شده با گواهی را بدون پسوند خاص پردازش کند.

اگر سرور، گواهی و SXG شما به درستی تنظیم شده باشند، کدی مانند زیر باید کار کند:

<!-- 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 فقط توسط تگ anchor ( <a> ) و link rel=prefetch در Chrome 73 و جدیدتر پشتیبانی می‌شود. همچنین توجه داشته باشید که اعتبار امضا به ازای هر مشخصات به 7 روز محدود شده است، بنابراین محتویات امضا شده شما نسبتاً سریع منقضی می شود.

ارائه بازخورد

ما مشتاق شنیدن بازخورد شما در مورد این آزمایش در webpackage-dev@chromium.org هستیم. همچنین می‌توانید به بحث مشخصات بپیوندید یا یک اشکال کروم را به تیم گزارش دهید. بازخورد شما به فرآیند استانداردسازی کمک زیادی می کند و همچنین به ما در رسیدگی به مسائل اجرایی کمک می کند.

بازخورد