TLS Handshake là gì? Cơ chế tạo kết nối HTTPS an toàn

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ài viết mới nhất

PKI là gì? Cơ chế vận hành hệ thống SSL/TLS từ gốc Certificate Authority (CA) là gì? Hoạt động như thế nào trong hệ thống SSL/TLS TLS Handshake là gì? Cơ chế tạo kết nối HTTPS an toàn SSL Termination là gì? Nên terminate SSL ở Load Balancer hay Web Server? ERR_SSL_PROTOCOL_ERROR là gì? Cách fix nhanh và triệt để

Có thể bạn quan tâm

Gọi điện
Zalo
Google Maps