APPLICATION & LOAD

Kiểm thử định tuyến TLS theo SNI và ALPN: đúng backend, đúng chính sách

27/8/2026 · 16

Nhiều TLS client gửi SNI và ALPN qua load balancer tới các backend khác nhau
Mục lục bài viết 10 phần

Một VIP có thể phục vụ nhiều hostname và giao thức, nhưng trạng thái TLS handshake thành công chưa chứng minh client nhận đúng certificate, ALPN chọn đúng protocol hoặc request đi tới đúng backend. Sai default route, wildcard hay policy fallback có thể tạo rò rỉ tenant mà dashboard vẫn “xanh”.

ĐỌC NHANH

Bài viết giúp bạn

  • Bài toán định tuyến TLS cần chứng minh
  • Topology và các mode TLS
  • Biến số phải kiểm soát
Tùy chỉnh đọc
01

Bài toán định tuyến TLS cần chứng minh

#

SNI trong TLS extension cho phép client đưa server name vào ClientHello; ALPN cho phép client/server thương lượng application protocol như HTTP/2 hoặc HTTP/1.1. Cả hai diễn ra trong quá trình handshake, trước khi HTTP request hoàn chỉnh được xử lý. Hành vi khi thiếu, sai hoặc không hỗ trợ phụ thuộc policy và implementation.

Cần chứng minh bốn mapping: hostname→certificate; SNI/ALPN→virtual service; virtual service→backend pool; và request→tenant/application đúng. Một certificate hợp lệ không chứng minh backend đúng; một response 200 cũng không chứng minh route không fallback sang tenant khác.

Với TLS passthrough, thiết bị trung gian có thể nhìn ClientHello nhưng không thấy HTTP đã mã hóa. Với termination, nó giải mã và có thể route bằng hostname/path; re-encryption thêm một phiên TLS mới tới backend. Ba mode có điểm đo và rủi ro khác nhau.

02

Topology và các mode TLS

#

Topology gồm client generator, DNS, load balancer/gateway, hai hoặc nhiều backend/tenant, CA/test certificate và telemetry. Mỗi backend trả response marker riêng, đồng thời ghi request ID để đối chiếu. Capture ClientHello ở phía client và connection/request ở phía backend theo chính sách dữ liệu.

Chạy ba nhánh nếu kiến trúc dùng: TLS termination tại gateway; TLS passthrough theo SNI; termination rồi re-encryption tới backend. Ghi source IP preservation, PROXY protocol, health check và service mesh sidecar nếu có.

Không giải mã traffic production hoặc lưu private key trong artifact. Dùng hostname, certificate và payload thử nghiệm dành riêng cho lab.

Ba topology kiểm thử TLS SNI ALPN trên load balancer và backend
Ba topology kiểm thử TLS SNI ALPN trên load balancer và backend
03

Biến số phải kiểm soát

#

Khóa TLS version, cipher/group, certificate chain, SAN/wildcard, SNI case/IDNA policy, ALPN list/order, session resumption, 0-RTT policy, client library/browser, HTTP version, gateway version/config và backend health.

Traffic profile tách new handshake/s, resumed handshake/s, concurrent connection, request/connection, payload, think time và arrival distribution. Nếu mỗi request mở connection mới, bài đo chủ yếu đo TLS; nếu connection reuse cao, backend/application trở thành giới hạn chính.

Biến · Ca thử · Điều có thể sai

SNI · đúng, thiếu, unknown, wildcard · Fallback sai tenant

ALPN · h2, http/1.1, list đổi thứ tự, unsupported · Protocol downgrade/error

Certificate · đúng, hết hạn lab, chain thiếu · Chọn cert/validation sai

Backend · healthy, slow, down · Route/failover sai pool

Resumption · cold/warm, key rotation · Hit ratio hoặc cross-tenant state

IPv4/IPv6 · dual-stack path · Policy không nhất quán

04

KPI và bằng chứng

#

KPI chức năng: hostname/certificate match, negotiated TLS/ALPN, expected backend ratio, unexpected tenant response, status/error theo phase và policy khi không có SNI. KPI hiệu năng: handshake/s, handshake latency p50/p95/p99, request latency, connection success, CPU, memory, crypto queue và backend utilization.

Bằng chứng gồm ClientHello/ServerHello metadata, certificate fingerprint/chain, client validation result, gateway access/routing log, backend request ID/marker, health state và generator raw output. Không chỉ dùng gateway log vì log có thể ghi rule selected nhưng upstream connection thất bại hoặc route khác ở downstream.

Định nghĩa pass/fail theo expected–actual matrix. Unexpected cross-tenant response là lỗi correctness nghiêm trọng dù tỷ lệ rất nhỏ; latency phải gắn traffic mode, TLS version, connection reuse và tải.

05

Ma trận SNI–ALPN–backend

#

SNI · ALPN đề nghị · Kỳ vọng · Negative evidence cần tìm

api-a.example · h2,http/1.1 · cert A, h2, pool A · Không có marker B

api-b.example · http/1.1 · cert B, pool B · Không fallback pool A

unknown.example · h2 · reject/default theo policy · Không lộ tenant response

không SNI · http/1.1 · policy legacy đã duyệt · Không chọn ngẫu nhiên

api-a.example · unsupported · alert/fallback theo policy · Không silent mismatch

wildcard match · h2 · SAN/policy đúng phạm vi · Không match quá rộng

Ma trận phải ghi policy mong đợi trước khi chạy. “Handshake fail” có thể là pass cho unknown SNI nếu thiết kế fail-closed. Ngược lại, default certificate là chủ ý vận hành chỉ khi tenant và phạm vi đã được phê duyệt.

06

Test plan chức năng và tải

#

Ở pha tải, phân phối client source và session cache phải thực tế. Một generator process có thể tái sử dụng cache quá hiệu quả, tạo resumption hit ratio không giống người dùng thật.

  • Lưu DNS, certificate inventory, rule order, pool và backend marker.
  • Chạy từng hàng ma trận ở tải thấp; xác minh certificate, ALPN và backend.
  • Lặp thiếu/unknown SNI, unsupported ALPN, IPv4/IPv6 và client legacy trong phạm vi.
  • Đo cold handshake baseline, rồi resumption với cùng client population.
  • Tăng new connection rate theo bậc; giữ request mix và payload cố định.
  • Tăng connection reuse để tách giới hạn TLS khỏi application.
  • Chạy composite hostname mix theo tỷ trọng production, kiểm tra fairness.
  • Làm slow/down một backend; đo route, retry, queue và failover.
  • Rotate certificate/ticket key theo runbook; quan sát error/resumption.
  • Rollback, kiểm tra không còn rule, cert hoặc session state ngoài ý muốn.
07

Failure, rotation và fallback

#

Thử certificate rotation trước hạn, chain mới, rolling reload và backend mTLS renewal nếu thuộc phạm vi. Đo handshake error và thời gian hai certificate cùng được phục vụ. Không kết luận zero-downtime từ một client vì cache, DNS và connection reuse che lỗi.

Khi pool A down, hệ thống chỉ được dùng pool B nếu policy cho phép và dữ liệu tenant phù hợp. “Dịch vụ vẫn trả 200” có thể là lỗi cô lập. Test retry cần request ID và idempotency; gateway retry một request có side effect có thể nhân giao dịch.

Với session resumption, xác minh ticket/key scope không tạo cross-host hoặc cross-tenant behavior ngoài thiết kế. 0-RTT, nếu bật, cần bài riêng về replay và idempotency; không gộp thành lợi ích latency mặc định.

Timeline kiểm thử xoay certificate TLS và định tuyến backend
Timeline kiểm thử xoay certificate TLS và định tuyến backend
08

Checklist vận hành

#
  • [ ] Inventory hostname, SAN/wildcard, certificate owner và ngày hết hạn.
  • [ ] Rule order và default/unknown SNI policy đã được duyệt.
  • [ ] Mỗi backend có marker/request ID độc lập.
  • [ ] Đã thử ALPN list/order và unsupported protocol.
  • [ ] Đã tách cold handshake, resumption và connection reuse.
  • [ ] IPv4/IPv6 và mode termination/passthrough đúng phạm vi.
  • [ ] Backend failure không làm rò route giữa tenant.
  • [ ] Certificate/ticket rotation và rollback đã thử.
  • [ ] Không lưu key hoặc payload nhạy cảm trong artifact.
  • [ ] Config, version, capture metadata và raw result được lưu.
09

Giới hạn của kết luận

#

Kết quả phụ thuộc client TLS stack, gateway, certificate chain, crypto acceleration, session cache, DNS và backend. SNI hiện diện không xác thực danh tính client; ALPN chỉ thương lượng protocol, không chứng minh semantics ứng dụng. TLS success không thay kiểm thử authorization.

Encrypted ClientHello có thể thay đổi khả năng quan sát/routing của middlebox tùy kiến trúc và hỗ trợ; cần bài riêng theo phiên bản, không suy diễn từ SNI truyền thống. Không dùng hostname giả thuộc bên thứ ba hoặc certificate production trong lab.

10

Khái niệm cần nhớ

#
  • SNI: TLS extension truyền server name trong ClientHello.
  • ALPN: Cơ chế thương lượng application protocol trong TLS.
  • TLS termination: Kết thúc TLS tại gateway/load balancer.
  • TLS passthrough: Chuyển phiên TLS tới backend mà không giải mã tại gateway.
  • Re-encryption: Tạo TLS mới từ gateway tới backend.
  • SAN: Danh sách danh tính hostname trong certificate.
  • Session resumption: Tái lập phiên với ít chi phí handshake hơn.
THUẬT NGỮ NHANH

Khái niệm cần nhớ

DUT / SUT
Thiết bị hoặc toàn bộ hệ thống đang là đối tượng của bài kiểm thử.
Steady state
Giai đoạn tải đã ổn định và đủ điều kiện để lấy số liệu đại diện.
Pass / fail
Kết luận dựa trên ngưỡng đã thống nhất, luôn đi cùng topology, cấu hình và điều kiện đo.
TÀI LIỆU ĐỐI CHIẾUTài liệu tham khảo4 nguồn

Nội dung được biên soạn độc lập, theo hướng vendor-neutral và đối chiếu các tài liệu gốc dưới đây. Tính năng sản phẩm cần được kiểm tra lại theo phiên bản đang sử dụng.

Nguyên tắc biên tập

NetVali ưu tiên nguồn tiêu chuẩn và tài liệu chính thức; phân biệt khuyến nghị triển khai với yêu cầu của tiêu chuẩn; không công bố thông số sản phẩm chưa gắn với phiên bản và điều kiện đo.

Thông số và khả năng sản phẩm có thể thay đổi theo phiên bản. Hãy đối chiếu tài liệu chính thức trước khi xây dựng cấu hình hoặc tiêu chí nghiệm thu.
BẮT ĐẦU TỪ BÀI TOÁN

Cần chuyển kiến thức thành test plan?

Chia sẻ mục tiêu, topology và ràng buộc kỹ thuật. NetVali sẽ cùng bạn xác định bài đo phù hợp.

Trao đổi yêu cầu kỹ thuật