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

Kinuko Yasuda

Signed HTTP Exchange (hoặc "SXG") là một nhóm nhỏ trong công nghệ mới nổi có tên là Gói web. Công nghệ này giúp nhà xuất bản yên tâm cung cấp nội dung của họ ở định dạng linh động mà vẫn đảm bảo tính toàn vẹn và ghi nhận nguồn cho nhà xuất bản. Nội dung di động có nhiều lợi ích, từ việc hỗ trợ phân phối nội dung nhanh hơn đến việc hỗ trợ 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 Signed HTTP Exchange hoạt động như thế nào? Công nghệ này cho phép nhà xuất bản ký một giao dịch HTTP (tức là một cặp yêu cầu/phản hồi) theo cách mà giao dị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 một cách an toàn trong thanh địa chỉ vì chữ ký trong cơ chế trao đổi là bằng chứng đủ để chứng minh rằng nội dung ban đầu đến từ nguồn gốc của nhà xuất bản.

Giao thức trao đổi nội dung đã ký: Bản chất

Điều này tách nguồn gốc của nội dung khỏi bên phân phối nội dung đó. Bạn có thể phát hành nội dung 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ách có thể sử dụng SXG, chẳng hạn như:

  • Tự động tải trước để bảo vệ quyền riêng tư: Mặc dù việc tự động tải trước tài nguyên (ví dụ: theo đường liên kết rel=prefetch) cho một thao tác điều hướng tiếp theo có thể giúp thao tác điều hướng nhanh hơn rất nhiều, nhưng việc này cũng có những nhược điểm về quyền riêng tư. Ví dụ: việc tải 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 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ải trước các tài nguyên trên nhiều nguồn gốc từ bộ nhớ đệm nhanh mà không cần truy cập vào trang web đích, do đó chỉ truyền đạt mối quan tâm của người dùng nếu và khi xảy ra thao tác điều hướng. Chúng tôi tin rằng điều này có thể hữu ích cho những trang web có mục tiêu đưa người dùng đế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 độ nhấp vào kết quả tìm kiếm.

  • Lợi ích của CDN mà không cần chuyển quyền kiểm soát khoá riêng tư của chứng chỉ: Nội dung đột nhiên trở nên phổ biến (ví dụ: được liên kết từ trang đầu 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ì trang web đó 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 được 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ẽ. SXG giúp bạn thực hiện việc này mà không cần chia sẻ khoá TLS.

Thử dùng cơ chế Trao đổi có chữ ký

Giao dịch hoán đổi đã ký có trong Chrome 73 trở lên và trước đây đã có 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 mình (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 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 và bạn có thể yêu cầu chứng chỉ hoạt động cho SXG trên trang này.

Sau khi nhận được chứng chỉ 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 tệp tham chiếu được phát hành trên GitHub.

Bạn cũng có thể xem các tệp ví dụ SXG thực tế 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 tệp văn bản đơn giản). Xin lưu ý rằng các tệp này chủ yếu được tạo để kiểm thử cục bộ, vì vậy, vui lòng không mong đợi 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 chứng chỉ tự ký và bật 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ã như sau sẽ hoạt động nếu bạn thiết lập đúng máy chủ, chứng chỉ và 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>

Xin lưu ý rằng SXG chỉ được thẻ neo (<a>) và link rel=prefetch hỗ trợ 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 ở 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.

Cung cấp ý kiến phản hồi

Chúng tôi rất mong nhận được ý 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 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á cũng như giúp chúng tôi giải quyết các vấn đề về việc triển khai.

Phản hồi