Подписанные HTTP-обмены

Kinuko Yasuda

Подписанный HTTP Exchange (или «SXG») — это подмножество новой технологии под названием «Веб-пакеты », которая позволяет издателям безопасно делать свой контент переносимым, то есть доступным для распространения другими сторонами, сохраняя при этом целостность контента и атрибуцию. Переносной контент имеет множество преимуществ: от ускорения доставки контента до облегчения обмена контентом между пользователями и упрощения работы в автономном режиме.

Итак, как же работают подписанные HTTP-обмены? Эта технология позволяет издателю подписывать один HTTP-обмен (т. е. пару запрос/ответ) таким же образом, чтобы подписанный обмен мог обслуживаться с любого кэширующего сервера. Когда браузер загружает этот подписанный обменник, он может безопасно отображать URL-адрес издателя в адресной строке, поскольку подпись в обмене является достаточным доказательством того, что контент изначально поступил от источника издателя.

Подписанная биржа: суть

Это отделяет происхождение контента от того, кто его распространяет. Ваш контент может быть опубликован в Интернете, не полагаясь на конкретный сервер, соединение или хостинг! Мы воодушевлены возможными вариантами использования SXG, такими как:

  • Предварительная выборка с сохранением конфиденциальности. Хотя предварительная выборка ресурсов (например, по ссылке rel=prefetch ) для последующей навигации может сделать навигацию намного быстрее, она также имеет недостатки конфиденциальности. Например, упреждающая выборка ресурсов для навигации между источниками сообщит целевому сайту, что пользователь потенциально заинтересован в некоторой информации, даже если пользователь в конечном итоге не посетил сайт. С другой стороны, SXG позволяет предварительно извлекать ресурсы из разных источников из быстрого кэша, даже не обращаясь к целевому сайту, тем самым сообщая об интересе пользователя только в том случае, если и когда происходит навигация. Мы считаем, что это может быть полезно для сайтов, цель которых — перенаправить своих пользователей на другие сайты. В частности, Google планирует использовать это на страницах результатов поиска Google, чтобы улучшить URL-адреса AMP и ускорить клики по результатам поиска.

  • Преимущества CDN без передачи контроля над закрытым ключом вашего сертификата: контент, который внезапно стал популярным (например, ссылка на первую страницу reddit.com ), часто перегружает сайт, на котором обслуживается контент, и если сайт относительно небольшой, имеет тенденцию замедляться или даже временно становиться недоступным. Этой ситуации можно избежать, если делиться контентом с помощью быстрых и мощных серверов кэширования, а SXG делает это возможным без совместного использования ваших ключей TLS.

Пробуем подписанные биржи

Подписанные обмены доступны в Chrome 73 и более поздних версиях, а ранее они были доступны в качестве пробной версии.

Создание вашего SXG

Чтобы создать SXG для вашего источника (как издателя), вам понадобится ключ сертификата для подписи подписи, а сертификат должен иметь специальное расширение «CanSignHttpExchanges», чтобы его можно было обрабатывать как действительный SXG. По состоянию на ноябрь 2018 года DigiCert является единственным центром сертификации, поддерживающим это расширение, и вы можете запросить сертификат, работающий для 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 поддерживается только тегом привязки ( <a> ) и link rel=prefetch в Chrome 73 и более поздних версиях. Также обратите внимание, что срок действия подписи ограничен 7 днями для каждой спецификации, поэтому срок действия подписанного содержимого истечет относительно быстро.

Предоставление обратной связи

Мы будем рады услышать ваши отзывы об этом эксперименте по адресу webpackage-dev@chromium.org . Вы также можете присоединиться к обсуждению спецификации или сообщить команде об ошибке Chrome . Ваш отзыв очень поможет процессу стандартизации, а также поможет нам решить проблемы реализации.

Обратная связь