Sàn giao dịch HTTP có chữ ký

Kinuko Yasuda

Trao đổi HTTP đã ký (hay "SXG") là một tập hợp con của công nghệ mới nổi được gọi là Gói web, cho phép nhà xuất bản làm cho nội dung của họ có thể di chuyển một cách an toàn, tức là có thể phân phối lại bởi mà vẫn đảm bảo tính toàn vẹn và ghi nhận tác giả của nội dung. Dễ di chuyển nội dung có nhiều lợi ích, từ việc cho phép phân phối nội dung nhanh hơn đến tạo điều kiện cho việc chia sẻ nội dung giữa người dùng và đơn giản hoá trải nghiệm ngoại tuyến.

Vậy Trao đổi HTTP có chữ ký hoạt động như thế nào? Công nghệ này cho phép nhà xuất bản ký một sàn giao dịch HTTP (ví dụ: một cặp yêu cầu/phản hồi), theo cách mà trao đổi có chữ ký có thể được phân phát từ mọi máy chủ lưu vào bộ nhớ đệm. Khi trình duyệt tải Signed Exchange này, nó có thể hiển thị URL của nhà xuất bản trong thanh địa chỉ một cách an toàn vì chữ ký Chúng tôi cung cấp bằng chứng đầy đủ cho thấy nội dung ban đầu đến từ nguồn gốc của nhà xuất bản.

Trao đổi có chữ ký: Bản chất

Thao tác này sẽ tách riêng nguồn gốc của nội dung với bên phân phối nội dung đó. Nội dung của bạn có thể được xuất bản lên web mà không cần phụ thuộc vào một máy chủ, kết nối hoặc dịch vụ lưu trữ! Chúng tôi rất vui mừng về những ứng dụng có thể có của SXG như:

  • Tìm nạp trước bảo đảm quyền riêng tư: Trong khi tìm nạp trước các tài nguyên (ví dụ: theo liên kết rel=tìm nạp trước) để điều hướng tiếp theo có thể giúp điều hướng nhanh hơn rất nhiều cũng có những nhược điểm về quyền riêng tư. Ví dụ: tìm nạp trước tài nguyên cho các thao tác điều hướng trên nhiều nguồn gốc sẽ cho trang đích biết rằng người dùng có khả năng quan tâm đến một thông tin nào đó ngay cả khi người dùng cuối cùng không truy cập vào trang web đó. Mặt khác, SXG cho phép tìm nạp trước các tài nguyên trên nhiều nguồn gốc từ một bộ nhớ đệm nhanh mà không cần truy cập đến trang đích, do đó chỉ truyền đạt sở thích của người dùng nếu và khi điều hướng xảy ra. Chúng tôi tin rằng điều này có thể hữu ích cho các trang web với mục tiêu là đưa người dùng đến các trang web khác. Cụ thể, Google định sử dụng tính năng này trên trang kết quả tìm kiếm của Google để cải thiện URL AMP và tăng tốc độ nhấp vào kết quả tìm kiếm.

  • Lợi ích của CDN mà không từ bỏ quyền kiểm soát khoá riêng tư của chứng chỉ: Nội dung bất ngờ trở nên phổ biến (ví dụ: được liên kết từ Trang đầu tiên của reddit.com) thường khiến trang web bị quá tải nơi nội dung được phân phát và nếu trang web tương đối nhỏ, trang web thường để giảm tốc độ hoặc thậm chí tạm thời không sử dụng được. Trường hợp này có thể nên tránh nếu nội dung được chia sẻ qua các máy chủ bộ nhớ đệm nhanh và mạnh mẽ và cơ chế SXG giúp thực hiện việc này mà không cần chia sẻ khoá TLS.

Thử dùng Exchanges đã ký

Trao đổi có chữ ký có trong Chrome 73 trở lên và trước đây được cung cấp dưới dạng bản dùng thử theo nguyên gốc.

Tạo SXG

Để tạo SXG cho nguồn gốc của bạn (với tư cách là nhà xuất bản), bạn cần có khoá chứng chỉ để ký chữ ký và chứng chỉ phải có "CanSignHttpExchanges" tiện ích để được xử lý dưới dạng một SXG hợp lệ. Kể từ tháng 11 năm 2018, DigiCert là CA duy nhất hỗ trợ tiện ích này và bạn có thể yêu cầu chứng chỉ cho SXG từ trang này.

Sau khi có chứng chỉ cho SXG, bạn có thể tạo SXG của riêng mình bằng cách sử dụng công cụ tạo tham chiếu được xuất bản trên github.

Bạn cũng có thể xem các tệp ví dụ thực tế cho SXG trong Kho lưu trữ mã của Chrome (ví dụ: tài khoản này là chức năng đơn giản nhất được tạo cho một tệp văn bản đơn giản). Xin lưu ý rằng các mã này chủ yếu được tạo để thử nghiệm cục bộ, nên đừng mong đợi chúng có chứng chỉ và dấu thời gian hợp lệ trong chữ ký.

Kiểm thử tính năng cục bộ

Để tạo SXG cho mục đích thử nghiệm, bạn có thể tạo chứng chỉ tự ký và bật chrome://flags/#allow-sxg-certs-without-extension để có Chrome xử lý các tiện ích SXG được tạo bằng chứng chỉ này mà không cần tiện ích đặc biệt.

Mã như sau sẽ hoạt động nếu máy chủ, chứng chỉ và cơ chế SXG của bạn đã được thiết lập đúng cách chưa:

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

Xin lưu ý rằng SXG chỉ được hỗ trợ bởi thẻ ký tự liên kết (<a>) và link rel=prefetch trong Chrome 73 trở lên. Ngoài ra, xin lưu ý rằng tính hợp lệ của chữ ký chỉ giới hạn ở mức 7 ngày cho mỗi thông số kỹ thuật, vì vậy nội dung đã ký của bạn sẽ hết hạn tương đối nhanh.

Gửi ý kiến phản hồi

Chúng tôi rất muốn nghe ý kiến phản hồi của bạn về thử nghiệm này tại webpackage-dev@chromium.org. Bạn có thể cũng tham gia cuộc thảo luận về thông số kỹ thuật, hoặc báo cáo lỗi trên Chrome cho nhóm. Ý kiến phản hồi của bạn sẽ giúp ích rất nhiều cho quá trình chuẩn hoá và cũng giúp chúng tôi giải quyết các vấn đề về triển khai.

Phản hồi