AlphaBay SecOps
Trang chủ › Mã Hóa Dữ Liệu

Hiểu rõ về chứng chỉ SSL/TLS và cách thức hoạt động trên Website

Ban biên tập AlphaBay SecOps · · Cập nhật
Hiểu rõ về chứng chỉ SSL/TLS và cách thức hoạt động trên Website

Chứng chỉ SSL/TLS là tệp điện tử gắn tên miền của website với một khóa công khai, được một tổ chức cấp chứng chỉ (CA) đáng tin cậy ký xác nhận. Khi bạn truy cập trang có HTTPS, trình duyệt kiểm tra chứng chỉ này để chắc chắn đang nói chuyện với đúng máy chủ, sau đó hai bên thỏa thuận khóa phiên và mã hóa toàn bộ dữ liệu trao đổi. Nói ngắn gọn, chứng chỉ trả lời câu hỏi "đây có đúng là trang tôi muốn vào không", còn giao thức TLS đảm bảo "không ai đọc hay sửa được dữ liệu trên đường đi".

SSL và TLS: tên gọi cũ và giao thức hiện tại

SSL là giao thức do Netscape phát triển từ thập niên 1990. Các phiên bản SSL đều đã lỗi thời và bị coi là không an toàn. TLS là phiên bản kế nhiệm; TLS 1.0 và 1.1 cũng đã bị các trình duyệt lớn loại bỏ. Hiện nay, máy chủ nên hỗ trợ TLS 1.2 và TLS 1.3. Tên gọi "chứng chỉ SSL" vẫn được dùng theo thói quen, nhưng thực chất chứng chỉ được dùng với giao thức TLS.

Bên trong một chứng chỉ có gì

  • Chủ thể: tên miền (và với một số loại chứng chỉ là tên tổ chức) mà chứng chỉ được cấp.
  • Tên thay thế (SAN): danh sách các tên miền chứng chỉ áp dụng, ví dụ cả tên miền chính và www.
  • Khóa công khai của máy chủ.
  • Tổ chức phát hành và chữ ký số của họ.
  • Thời hạn hiệu lực: ngày bắt đầu và ngày hết hạn.
  • Số sê-ri và thông tin để kiểm tra thu hồi.

Bạn có thể xem các thông tin này bằng cách nhấp vào biểu tượng bên trái thanh địa chỉ và mở phần chi tiết chứng chỉ.

Chuỗi tin cậy: vì sao trình duyệt tin chứng chỉ

Hệ điều hành và trình duyệt có sẵn một danh sách chứng chỉ gốc (root) của các CA đã qua kiểm định. CA gốc hiếm khi ký trực tiếp chứng chỉ website; họ ký cho CA trung gian, và CA trung gian ký cho website. Khi kiểm tra, trình duyệt lần ngược chuỗi: chứng chỉ website được ký bởi trung gian, trung gian được ký bởi gốc, gốc nằm trong danh sách tin cậy. Chữ ký ở mỗi mắt xích dựa trên hàm băm và mật mã khóa công khai, như được trình bày trong bài hàm băm và vai trò xác thực dữ liệu.

Ngoài ra, mọi chứng chỉ được trình duyệt chấp nhận đều phải ghi vào nhật ký công khai Certificate Transparency, giúp phát hiện chứng chỉ cấp sai hoặc cấp trái phép cho tên miền của bạn.

Bắt tay TLS diễn ra như thế nào

Với TLS 1.3, quá trình được rút gọn chỉ còn một vòng trao đổi:

  1. Client Hello: trình duyệt gửi các bộ mã hỗ trợ, phần chia sẻ khóa cho trao đổi khóa Diffie-Hellman và tên miền muốn truy cập (SNI).
  2. Server Hello: máy chủ chọn bộ mã, gửi phần chia sẻ khóa của mình. Từ đây hai bên tính được bí mật chung, và phần còn lại của bắt tay đã được mã hóa.
  3. Chứng chỉ và chữ ký: máy chủ gửi chứng chỉ và ký lên bản ghi bắt tay bằng khóa riêng, chứng minh nó sở hữu khóa ứng với chứng chỉ.
  4. Finished: hai bên xác nhận, bắt đầu truyền dữ liệu bằng mã hóa đối xứng.

Dữ liệu sau đó được bảo vệ bằng thuật toán mã hóa xác thực như AES-GCM hoặc ChaCha20-Poly1305; khác biệt giữa chúng được so sánh trong bài AES-256 và ChaCha20. Vì khóa phiên được tạo bằng Diffie-Hellman tạm thời, kể cả khi khóa riêng của máy chủ bị lộ sau này, các phiên cũ vẫn không bị giải mã. Tính chất này gọi là bí mật chuyển tiếp hoàn hảo (forward secrecy).

Các loại chứng chỉ

LoạiCA kiểm tra gìPhù hợp với
DV (Domain Validation)Quyền kiểm soát tên miềnBlog, website cá nhân, phần lớn website doanh nghiệp
OV (Organization Validation)Tên miền và sự tồn tại hợp pháp của tổ chứcDoanh nghiệp muốn thông tin tổ chức hiển thị trong chứng chỉ
EV (Extended Validation)Kiểm tra tổ chức kỹ lưỡng hơnTổ chức có yêu cầu tuân thủ riêng

Về mặt mã hóa, ba loại như nhau. Trình duyệt hiện đại cũng không còn hiển thị khác biệt nổi bật cho EV trên thanh địa chỉ. Ngoài ra còn có chứng chỉ wildcard (áp dụng cho mọi tên miền con cấp một) và chứng chỉ nhiều tên miền.

Biểu tượng ổ khóa nói gì và không nói gì

Ổ khóa chỉ có nghĩa kết nối được mã hóa và chứng chỉ hợp lệ cho tên miền đó. Nó không có nghĩa trang web đáng tin. Trang lừa đảo cũng có thể lấy chứng chỉ DV miễn phí cho tên miền na ná ngân hàng. Vì vậy, kiểm tra tên miền chính xác quan trọng hơn nhìn ổ khóa. Thêm nữa, tên miền vẫn có thể lộ qua DNS và SNI; để giảm rò rỉ này, xem bài cấu hình DNS mã hóa.

Dành cho quản trị website

  • Tự động gia hạn: dùng giao thức ACME với các CA như Let's Encrypt để cấp và gia hạn tự động. Thời hạn chứng chỉ đang được ngành rút ngắn dần, nên gia hạn thủ công ngày càng không khả thi.
  • Cấu hình phiên bản: chỉ bật TLS 1.2 và 1.3, tắt bộ mã yếu.
  • Chuyển hướng HTTP sang HTTPS và bật HSTS để trình duyệt luôn dùng HTTPS.
  • Gửi đầy đủ chuỗi trung gian: thiếu chứng chỉ trung gian là lỗi phổ biến khiến một số thiết bị báo không tin cậy.
  • Bảo vệ khóa riêng: phân quyền chặt tệp khóa, không đưa vào kho mã nguồn.
  • Theo dõi nhật ký Certificate Transparency để phát hiện chứng chỉ lạ cấp cho tên miền của bạn.
  • Kiểm tra định kỳ bằng các công cụ quét cấu hình TLS trực tuyến.

Các lỗi chứng chỉ người dùng hay gặp

"Chứng chỉ đã hết hạn", "tên không khớp", "tổ chức phát hành không đáng tin" là các cảnh báo phổ biến. Đôi khi nguyên nhân đơn giản là đồng hồ máy tính sai ngày. Nhưng nếu cảnh báo xuất hiện trên trang ngân hàng hay email khi dùng Wi-Fi công cộng, đừng bấm "tiếp tục"; đó có thể là dấu hiệu bị tấn công xen giữa. Chuyển sang mạng di động và kiểm tra lại.

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

Website nhỏ không thu thập dữ liệu có cần HTTPS không?

Có. HTTPS chống chèn quảng cáo, mã độc vào trang trên đường truyền, được trình duyệt và công cụ tìm kiếm ưu tiên, và chứng chỉ DV miễn phí đã phổ biến.

Chứng chỉ miễn phí có kém an toàn hơn chứng chỉ trả phí không?

Về mã hóa thì không. Khác biệt nằm ở mức xác minh tổ chức, hỗ trợ kỹ thuật, bảo hiểm và thời hạn. Với đa số website, chứng chỉ DV miễn phí là đủ.

Chứng chỉ bị thu hồi là gì?

Khi khóa riêng bị lộ hoặc chứng chỉ cấp sai, CA đánh dấu chứng chỉ không còn hiệu lực trước hạn. Trình duyệt kiểm tra trạng thái này qua các cơ chế như OCSP hoặc danh sách thu hồi được tổng hợp.

HTTPS có ngăn được nhà mạng biết tôi vào trang nào không?

Không hoàn toàn. Nội dung được mã hóa, nhưng tên miền có thể lộ qua truy vấn DNS và trường SNI, trừ khi dùng DNS mã hóa và trang hỗ trợ Encrypted Client Hello.

Bài liên quan