Website của bạn đã có HTTPS — ổ khóa xanh xuất hiện, cert đúng, mọi thứ có vẻ ổn. Nhưng "có HTTPS" chưa phải là đã dùng HTTPS đúng cách. Ba tính năng dưới đây thường bị bỏ qua dù chúng có thể tăng tốc kết nối rõ rệtbịt những lỗ hổng bảo mật mà cert đơn thuần không làm được:

  • HSTS — buộc trình duyệt luôn dùng HTTPS, không để lọt request HTTP nào kể cả khi người dùng gõ tay vào thanh địa chỉ.

  • HTTP/2 — giao thức truyền dữ liệu thế hệ mới, nhanh hơn HTTP/1.1 nhờ multiplexing và nén header.

  • HTTP/3 — thế hệ tiếp theo dựa trên QUIC, giảm độ trễ đáng kể trên kết nối di động hoặc mạng không ổn định.

Bài viết này giải thích từng tính năng làm gì, cách kiểm tra xem website đã bật chưa, và các bước cơ bản để kích hoạt.

Kiểm tra nhanh HSTS: nhập tên miền vào công cụ kiểm tra HSTS — header HSTS đang có, giá trị max-age và trạng thái preload hiện ra ngay.

Ba tính năng HTTPS hiện đại — tóm tắt

Tính năngLàm gìYêu cầu trướcLợi ích chínhHSTSBuộc HTTPS, xóa downgrade attacksSSL/TLS hợp lệBảo mật: ngăn man-in-the-middle qua redirect HTTPHTTP/2Giao thức tầng vận chuyển hiệu quả hơnHTTPS (không dùng được trên HTTP thuần)Tốc độ: load trang nhanh hơn nhờ multiplex nhiều request song songHTTP/3Giao thức dựa trên UDP/QUICHTTPS + server hỗ trợ QUICTốc độ + phục hồi kết nối: khởi tạo 0-RTT, tốt cho mobile

Thứ tự ưu tiên hợp lý: đảm bảo SSL đúng trước → bật HSTS → bật HTTP/2 → bật HTTP/3. Không bỏ qua thứ tự vì HSTS phụ thuộc vào SSL đúng, còn HTTP/2 và HTTP/3 đều cần HTTPS.

4 bước kiểm tra và kích hoạt từng tính năng

Bước 1 — Xác nhận SSL đang hoạt động đúng (điều kiện tiên quyết)

Cả HSTS, HTTP/2 và HTTP/3 đều cần HTTPS hợp lệ ở dưới. Nếu SSL đang có vấn đề mà bạn bật HSTS, website có thể bị chặn hoàn toàn mà không có cách thoát cho người dùng. Vì vậy, bước đầu tiên là xác nhận SSL đang ổn.

👉 Kiểm tra SSL: công cụ kiểm tra SSL (chain, SAN, TLS version, hạn cert).

Kết quả cần thấy: TLS handshake thành công, chain đủ, cert chưa hết hạn, SAN bao gồm đúng domain bạn đang dùng. Nếu SSL có vấn đề, giải quyết trước rồi mới tiếp tục các bước dưới.

Lỗi hay gặp:

  • Bỏ qua bước này vì nghĩ "SSL đang xanh là đủ" — ổ khóa xanh chỉ báo cert hợp lệ, không báo chain đủ hay TLS version đúng.

Bước 2 — Kiểm tra và bật HSTS

HSTS (HTTP Strict Transport Security) là một HTTP header đơn giản nhưng có tác động lớn: nó bảo trình duyệt "domain này chỉ dùng HTTPS, lần sau đừng thử HTTP nữa". Một khi trình duyệt nhận header này, nó tự redirect HTTPS mà không cần server làm gì thêm — nhanh hơn và bịt được lỗ hổng SSL stripping.

👉 Kiểm tra HSTS: công cụ kiểm tra HSTS (header, max-age, includeSubDomains, preload).

Cấu hình HSTS trên Nginx:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Trên Apache:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Giải thích các tham số:

  • max-age=31536000 — trình duyệt nhớ trong 1 năm (31.536.000 giây).

  • includeSubDomains — áp dụng cho tất cả subdomain. Chỉ thêm khi mọi subdomain đã có SSL đúng.

  • preload — để đăng ký vào danh sách preload của Chrome/Firefox. Thêm khi bạn chắc chắn muốn bắt buộc HTTPS vĩnh viễn, kể cả lần đầu người dùng truy cập.

Lỗi hay gặp:

  • Thêm includeSubDomains khi còn subdomain HTTP → toàn bộ subdomain đó bị chặn ngay.

  • Thêm preload nhưng không đăng ký tại hstspreload.org → directive preload trong header vô hiệu, không có tác dụng preload thật sự.

  • Bật HSTS khi SSL vẫn còn lỗi → người dùng bị chặn cứng, không có cách vào website cho tới khi cert được sửa.

Bước 3 — Kiểm tra và bật HTTP/2

HTTP/2 cho phép trình duyệt và server gửi nhiều yêu cầu đồng thời trên một kết nối (multiplexing), nén header và ưu tiên request — kết quả là trang web tải nhanh hơn rõ rệt, nhất là với trang có nhiều tài nguyên nhỏ như CSS, JS, icon.

👉 Kiểm tra HTTP/2: công cụ kiểm tra HTTP/2 (xem server đang dùng giao thức nào thật sự trong kết nối).

Cách bật trên Nginx (từ phiên bản 1.9.5):

server {
    listen 443 ssl http2;
    # ... SSL config va cac thu khac
}

Trên Apache (cần module mod_http2):

Protocols h2 http/1.1

Lỗi hay gặp:

  • Nginx cũ hơn 1.9.5 không hỗ trợ HTTP/2: kiểm tra phiên bản bằng nginx -v trước khi thêm http2.

  • Đứng sau proxy nhưng quên cấu hình proxy: nếu server đứng sau load balancer, cần cấu hình cả tầng proxy và backend mới đàm phán HTTP/2 đúng.

Bước 4 — Kiểm tra và bật HTTP/3 (QUIC)

HTTP/3 dùng giao thức QUIC trên UDP thay vì TCP. Ưu điểm lớn nhất là khởi tạo kết nối 0-RTT — lần truy cập tiếp theo gần như tức thì — và khả năng phục hồi mạnh khi người dùng chuyển mạng giữa chừng (WiFi sang 4G, v.v.).

👉 Kiểm tra HTTP/3: công cụ kiểm tra HTTP/3 (xem server có quảng bá hỗ trợ HTTP/3 qua header Alt-Svc không và kết nối QUIC thành công chưa).

Một số cách bật HTTP/3:

  • Nginx 1.25.0+ với QUIC: cần build với --with-http_v3_module, thêm listen 443 quic vào cấu hình.

  • Cloudflare hoặc CDN: nếu đang dùng Cloudflare, HTTP/3 bật ngay trong dashboard mà không cần chạm server.

  • LiteSpeed: hỗ trợ HTTP/3 gần như out-of-the-box, bật trong admin panel.

Lỗi hay gặp:

  • Firewall chặn UDP port 443: HTTP/3 chạy trên UDP — một số firewall cấu hình chặt sẽ block. Cần mở port 443/UDP.

  • Header Alt-Svc có nhưng kết nối QUIC thất bại: header chỉ là quảng cáo, không đảm bảo kết nối thành công. Dùng công cụ kiểm tra từ bên ngoài để xác nhận QUIC thật sự hoạt động.

Sau khi bật — bao lâu có hiệu lực?

  • HSTS: hiệu lực ngay sau khi header được gửi đi. Trình duyệt nào đã nhận header thì nhớ trong thời gian max-age. Muốn "rút lại" HSTS, gửi max-age=0 và chờ trình duyệt xóa bộ nhớ cũ — nhưng nếu đã preload thì không rút lại được ngay.

  • HTTP/2: hiệu lực ngay sau khi bật và reload web server. Trình duyệt tự đàm phán giao thức trong mỗi kết nối, không cần cấu hình phía client.

  • HTTP/3: client biết server hỗ trợ HTTP/3 qua header Alt-Svc từ lần kết nối đầu tiên, rồi thử QUIC từ lần sau. Có thể mất vài lần truy cập trước khi HTTP/3 được dùng ổn định.

Câu hỏi thường gặp (FAQ)

Bật HSTS rồi muốn tắt — có được không? Về mặt kỹ thuật được: gửi Strict-Transport-Security: max-age=0 để trình duyệt xóa bộ nhớ HSTS. Tuy nhiên, nếu đã đăng ký preload list thì không tắt được ngay — cần request gỡ khỏi danh sách và chờ vài tháng để danh sách cập nhật. Vì vậy hãy chắc SSL đang ổn trước khi bật HSTS, và cân nhắc kỹ trước khi thêm preload.

Website không dùng Nginx/Apache — có bật HTTP/2 được không? HTTP/2 được hỗ trợ bởi hầu hết web server hiện đại: Nginx, Apache, Caddy, LiteSpeed, IIS và Node.js (module http2 built-in). Nếu đang dùng hosting với control panel (cPanel, DirectAdmin), thường có option bật HTTP/2 trong phần cài đặt tên miền mà không cần sửa file config thủ công.

HTTP/3 có thật sự cần thiết không, hay HTTP/2 là đủ? HTTP/2 là tiêu chuẩn hiện tại và đủ cho phần lớn website. HTTP/3 mang lại lợi ích rõ nhất cho người dùng di động, kết nối không ổn định hoặc website cần tải rất nhiều tài nguyên nhỏ. Nếu server hỗ trợ HTTP/3 dễ dàng (Cloudflare, LiteSpeed, Nginx 1.25+), bật thêm cũng không có hại gì.

Kiểm tra xong thấy website đã có HTTP/2 nhưng trang vẫn chậm — vì sao? HTTP/2 giải quyết bottleneck ở tầng giao thức, không phải tầng server hay code. Nếu TTFB cao, database nặng, hay JavaScript nhiều thì HTTP/2 không sửa được những vấn đề đó. Cần kết hợp với công cụ đo tốc độ riêng để xác định đúng điểm nghẽn — công cụ kiểm tra SSL cho biết giao thức đang dùng, còn bottleneck thật ở chỗ khác thì cần đo riêng.


BKNS Tools — bộ công cụ kiểm tra HTTPS & hiệu năng miễn phí. Kiểm tra HSTS · Kiểm tra HTTP/2 · Kiểm tra HTTP/3 · Kiểm tra SSL — không cần đăng nhập.