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

Kinuko Yasuda

Signed HTTP Exchange (hay "SXG") là một tập hợp con của công nghệ mới nổi có tên 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ể được các bên khác phân phối lại trong khi vẫn giữ nguyên tính toàn vẹn và thuộc tính của nội dung. Nội dung di động có nhiều lợi ích, từ việc cho phép phân phối nội dung nhanh hơn đến việc hỗ trợ việc chia sẻ nội dung giữa những người dùng và trải nghiệm ngoại tuyến đơn giản hơ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 quá trình trao đổi HTTP (tức là 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ừ bất kỳ máy chủ lưu vào bộ nhớ đệm nào. Khi tải cơ chế trao đổi có chữ ký này, trình duyệt 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ý trong trao đổi là 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 trên web mà không cần dựa vào một máy chủ, kết nối hoặc dịch vụ lưu trữ cụ thể! 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ư: Mặc dù việc tìm nạp trước các tài nguyên (ví dụ: bằng cách liên kết rel=tìm nạp trước) cho lần điều hướng tiếp theo có thể giúp quá trình điều hướng trở nên nhanh hơn rất nhiều, nhưng nó cũng có một số nhược điểm về quyền riêng tư. Ví dụ: việc tìm nạp trước tài nguyên cho các thao tác điều hướng nhiều nguồn gốc sẽ cho trang web đích biết rằng người dùng có thể 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 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 vào trang đích, do đó chỉ truyền đạt mối quan tâm của người dùng nếu và khi quá trình điều hướng diễn ra. Chúng tôi tin rằng điều này có thể hữu ích cho các trang web có mục tiêu là đưa người dùng của họ đến các trang web khác. Cụ thể, Google dự định sử dụng URL này trên các 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ư chứng chỉ của bạn: Nội dung đột nhiên trở nên phổ biến (ví dụ: được liên kết từ trang đầu tiên của reddit.com) thường làm quá tải trang web nơi nội dung được phân phát và nếu trang web tương đối nhỏ thì nội dung có xu hướng chậm lại hoặc thậm chí tạm thời không hoạt động. Bạn có thể tránh tình huống này nếu nội dung được chia sẻ bằng các máy chủ bộ nhớ đệm nhanh và mạnh mẽ. Còn SXG có thể giúp bạn 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ó một khoá chứng chỉ để ký chữ ký và chứng chỉ đó phải có một phần mở rộng đặc biệt"CanSignHttpExchanges" để được xử lý dưới dạng 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ỉ phù hợp với SXG thông qua 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ế về SXG trong Kho lưu trữ mã của Chrome (ví dụ: tệp này là tệp đơ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 tệp này được tạo chủ yếu để kiểm thử cục bộ. Đừng kỳ vọng rằng các tệp này 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 kiểm thử, bạn có thể tạo một chứng chỉ tự ký và cho phép chrome://flags/#allow-sxg-certs-without-extension để Chrome xử lý các SXG được tạo bằng chứng chỉ này mà không cần phần mở rộng đặc biệt.

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

<!-- 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 hiệu lực của chữ ký bị giới hạn là 7 ngày cho mỗi thông số kỹ thuật, vì vậy, nội dung đã ký 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ũng có thể tham gia cuộc thảo luận về thông số kỹ thuật hoặc báo cáo lỗi của 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 đề triển khai.

Ý kiến phản hồi