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

Kinuko Yasuda

Cơ chế trao đổi HTTP có chữ ký (hay "SXG") là một tập hợp con của công nghệ đang phát triển có tên là Gói web, cho phép nhà xuất bản di chuyển nội dung của họ một cách an toàn, tức là có thể phân phối lại cho các bên khác, trong khi vẫn giữ 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 phân phối nội dung nhanh hơn đến tạo điều kiện thuận lợi cho việc chia sẻ nội dung giữa người dùng và trải nghiệm ngoại tuyến đơn giản hơn.

Vậy cơ chế trao đổi HTTP đã ký hoạt động như thế nào? Công nghệ này cho phép nhà xuất bản ký một trao đổi HTTP duy nhất (tức là một cặp yêu cầu/phản hồi), theo cách có thể phân phát nội dung trao đổi đã ký từ bất kỳ máy chủ lưu vào bộ nhớ đệm nào. Khi tải quy trình 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 phiên trao đổi này 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.

Cơ chế 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 từ 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 hào hứng về những cô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 tài nguyên (ví dụ: bằng đường liên kết rel=fetch) cho lần điều hướng tiếp theo có thể khiến quá trình điều hướng có cảm giác nhanh hơn rất nhiều, nhưng việc này 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 hoạt động đ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 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 vào trang web đích, do đó, chỉ cho biết mối quan tâm của người dùng khi hoạt động đ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 tính năng 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 số lượt nhấp vào kết quả tìm kiếm.

  • Lợi ích của CDN mà không nhường quyền kiểm soát khoá riêng tư cho 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 phân phát nội dung và nếu trang web tương đối nhỏ, 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. Trường hợp này có thể tránh được nếu nội dung được chia sẻ qua máy chủ bộ nhớ đệm nhanh và mạnh mẽ. Cơ chế SXG giúp bạn làm được điều này mà không cần chia sẻ khoá TLS (Bảo mật tầng truyền tải).

Dùng thử cơ chế trao đổi có chữ ký

Tính năng Trao đổi có chữ ký hiện có trong Chrome 73 trở lên và trước đây có bản dùng thử theo nguyên gốc.

Tạo SXG

Để tạo SXG cho nguồn gốc (với tư cách là nhà xuất bản), bạn cần có khoá chứng chỉ để ký chữ ký, chứng chỉ phải có tiện ích"CanSignHttpExchanges" đặc biệt để đượ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. Bạn có thể yêu cầu cấp chứng chỉ phù hợp với SXG từ trang này.

Sau khi nhận được chứng chỉ cho SXG, bạn có thể tạo SXG của riêng mình bằng cách dùng các công cụ tạo tệp đối chiếu phát hành 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 chúng được tạo chủ yếu để kiểm thử cục bộ, đừng cho rằng 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 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ỉ mà không cần tiện ích đặc biệt.

Mã sau đây sẽ hoạt động nếu máy chủ, chứng chỉ và SXG đượ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ẻ liên kết (<a>) và link rel=prefetch trong Chrome 73 trở lên. Ngoài ra, xin lưu ý rằng thời hạn hiệu lực của chữ ký được giới hạn ở 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.

Cung cấp phản hồi

Chúng tôi 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 một 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á, đồng thời giúp chúng tôi giải quyết các vấn đề về việc triển khai.

Ý kiến phản hồi