TLS Handshake là gì? Cơ chế tạo kết nối HTTPS an toàn
Cập nhật lần cuối: 18/05/2026
TLS Handshake là quá trình thiết lập kết nối an toàn giữa client và server trong HTTPS. Tìm hiểu cách hoạt động, các bước chi tiết và vì sao TLS ảnh hưởng đến hiệu năng website.
TLS Handshake là gì?
TLS Handshake là quá trình “thỏa thuận” giữa browser (client) và server để:
- xác thực server
- thống nhất thuật toán mã hóa
- tạo session key để mã hóa dữ liệu
Nói đơn giản: đây là bước “giới thiệu + xác thực + tạo khóa” trước khi HTTPS bắt đầu truyền dữ liệu.
Nếu chưa hiểu HTTPS tổng thể, bạn nên xem trước:
SSL là gì?
TLS Handshake diễn ra khi nào?
TLS Handshake xảy ra mỗi khi:
- bạn truy cập website HTTPS mới
- mở kết nối mới đến server
- tạo connection sau khi hết session reuse
Ví dụ:
https://example.com
Browser sẽ không gửi dữ liệu ngay, mà phải handshake trước.
TLS Handshake hoạt động như thế nào?
Quá trình TLS Handshake (phiên bản đơn giản):
Client Hello
↓
Server Hello
↓
Certificate
↓
Key Exchange
↓
Session Key Created
↓
Encrypted Communication
1. Client Hello
Browser gửi:
- TLS version hỗ trợ
- cipher suites hỗ trợ
- random value
- SNI (domain muốn truy cập)
2. Server Hello
Server phản hồi:
- chọn TLS version
- chọn cipher suite
- gửi certificate (SSL cert)
Nếu bạn chưa rõ certificate, xem thêm:
SSL là gì?
3. Certificate Verification
Browser kiểm tra:
- certificate có hợp lệ không
- có bị self-signed không
- có đúng domain không
- chain có đầy đủ không
Nếu fail → lỗi như:
- ERR_SSL_PROTOCOL_ERROR
- NET::ERR_CERT_AUTHORITY_INVALID
4. Key Exchange
Hai bên tạo ra shared secret.
Tuỳ thuật toán:
- RSA (cũ)
- ECDHE (hiện đại)
ECDHE phổ biến vì:
- hỗ trợ forward secrecy
- bảo mật tốt hơn
5. Session Key được tạo
Từ shared secret → tạo symmetric key.
Key này dùng để:
- mã hóa toàn bộ data sau handshake
6. Encrypted Communication bắt đầu
Từ đây trở đi:
- HTTP request được mã hóa thành HTTPS
- dữ liệu không đọc được nếu bị sniff
TLS Handshake trong TLS 1.2 vs TLS 1.3
TLS 1.2
- nhiều bước hơn
- handshake chậm hơn
- hỗ trợ thuật toán cũ
TLS 1.3
Client Hello → Server Hello → Encrypted Communication
Ưu điểm:
- nhanh hơn
- ít round-trip hơn
- bỏ thuật toán yếu
- mặc định forward secrecy
Nếu bạn đang tối ưu performance, xem thêm:
TLS 1.2 vs TLS 1.3
TLS Handshake ảnh hưởng performance như thế nào?
Handshake ảnh hưởng:
- TTFB (Time To First Byte)
- latency
- CPU server (crypto operations)
HTTPS không chậm vì encryption data, mà chậm vì TLS handshake.
Các yếu tố làm handshake chậm:
- certificate chain dài
- server cấu hình cipher yếu
- không bật session reuse
- network latency cao
- TLS Handshake và SSL Termination
Trong kiến trúc reverse proxy:
Client
↓ TLS Handshake
NGINX / Load Balancer
↓ (optional TLS)
Backend
Proxy có thể:
- terminate TLS
- giảm load handshake cho backend
Nếu bạn chưa rõ mô hình này, xem thêm:
SSL termination là gì?
TLS Handshake và OCSP
Trong handshake, browser có thể:
- kiểm tra certificate status (revocation)
- thông qua OCSP hoặc OCSP Stapling
Nếu OCSP chậm:
- handshake bị delay
Xem thêm:
OCSP Stapling là gì?
TLS Handshake và SNI
SNI (Server Name Indication) giúp:
- server biết bạn đang truy cập domain nào
Ví dụ:
example.com
api.example.com
Không có SNI:
- server không biết trả cert nào
- dễ lỗi SSL
TLS Handshake có cần mỗi lần request không?
Không.
Nhờ:
- keep-alive
- session resumption
- TLS ticket
→ handshake không diễn ra mỗi request.
Lỗi liên quan TLS Handshake
1. ERR_SSL_PROTOCOL_ERROR
- handshake fail hoàn toàn
2. CERTIFICATE_INVALID
- cert sai hoặc không trust
3. TLS_VERSION_NOT_SUPPORTED
- server dùng TLS quá cũ
Nếu gặp lỗi, xem thêm:
ERR_SSL_PROTOCOL_ERROR là gì?
Làm sao để TLS Handshake nhanh hơn?
Trong đa số hệ thống hiện đại, bottleneck của HTTPS không nằm ở việc mã hóa dữ liệu mà nằm ở:
- TLS handshake
- network round-trip
- certificate verification
Một website có payload nhỏ nhưng handshake chậm vẫn có thể tạo cảm giác load chậm rõ rệt.
1. Dùng TLS 1.3
TLS 1.3 giảm số round-trip cần thiết để tạo kết nối HTTPS.
TLS 1.2 thường cần:
2 RTT (Round Trip Time)
Trong khi TLS 1.3 chỉ cần:
1 RTT
Điều này đặc biệt quan trọng với:
- mobile network
- user quốc tế
- latency cao
Nếu đang dùng TLS cũ, xem thêm:
TLS 1.2 vs TLS 1.3
2. Bật Session Resumption
Không phải request nào cũng cần full handshake.
Browser có thể reuse session thông qua:
- Session ID
- Session Ticket
Điều này giúp:
- giảm CPU crypto
- giảm latency
- tăng tốc request lặp lại
Trên website traffic lớn, session resumption giúp giảm đáng kể số lượng expensive handshake operation.
3. Giảm certificate chain không cần thiết
Certificate chain càng dài:
- handshake càng nặng
- browser verify càng lâu
Một số hệ thống:
- attach dư intermediate cert
- cấu hình chain sai
- duplicate chain
→ làm HTTPS chậm hơn không cần thiết.
4. Dùng ECDSA thay vì RSA nếu phù hợp
ECDSA:
- nhẹ hơn
- handshake nhanh hơn
- CPU thấp hơn
Đặc biệt hiệu quả trên:
- mobile device
- high connection concurrency
Tuy nhiên cần kiểm tra compatibility trước khi triển khai production.
5. Dùng HTTP/2 hoặc HTTP/3
HTTP/2 giúp:
- multiplexing
- giảm số connection mới
HTTP/3 còn tối ưu handshake tốt hơn nhờ:
- QUIC
- UDP-based transport
Nếu đang tối ưu HTTPS performance, xem thêm:
HTTP/1.1 vs HTTP/2 vs HTTP/3
TLS Handshake có ảnh hưởng SEO không?
Không trực tiếp.
Nhưng ảnh hưởng gián tiếp:
- tăng hoặc giảm TTFB
- ảnh hưởng Core Web Vitals
- ảnh hưởng crawl stability
Nếu đang build SEO HTTPS cluster, xem thêm:
HTTPS ảnh hưởng SEO như thế nào?
Kết luận
TLS Handshake là nền tảng của HTTPS, đóng vai trò:
- xác thực server
- tạo khóa mã hóa
- thiết lập kết nối an toàn
Hiểu TLS handshake giúp bạn:
- debug SSL error nhanh hơn
- tối ưu performance HTTPS
- thiết kế kiến trúc reverse proxy tốt hơn
Bạn vẫn chưa biết nên chọn…?
Đừng lo lắng, đội ngũ chuyên gia của chúng tôi luôn sẵn sàng lắng nghe nhu cầu và tư vấn giải pháp bảo mật phù hợp nhất cho website và doanh nghiệp của bạn. Hãy liên hệ ngay để được hỗ trợ nhanh chóng, chính xác và hiệu quả.