Server

ERR_SSL_PROTOCOL_ERROR — Nguyên nhân và cách khắc phục

Cập nhật 2026-08-30Đọc ~9 phút

ERR_SSL_PROTOCOL_ERROR xuất hiện khi trình duyệt và máy chủ không thể thống nhất một kết nối mã hóa. Việc này diễn ra ở bước bắt tay, trước khi bất kỳ nội dung nào được gửi đi — nên trang không tải một phần hay tải chậm, mà đơn giản là không bao giờ bắt đầu.

Điều quan trọng nhất là biết lỗi thuộc phía nào, vì hai phía cần hai cách xử lý hoàn toàn khác nhau. Nếu chỉ mình bạn gặp, gần như luôn là đồng hồ hệ thống, phần mềm diệt virus can thiệp TLS, hoặc cache của chính trình duyệt. Nếu ai cũng gặp, đó là chứng chỉ, cấu hình hoặc phiên bản giao thức trên máy chủ.

Trước tiên: lỗi ở phía bạn hay phía máy chủ

Ba phép thử này mất chưa tới hai phút và loại bỏ được một nửa danh sách nguyên nhân.

  • Mở website bằng dữ liệu di động trên điện thoại, với Wi-Fi đã tắt. Vào được nghĩa là mạng hoặc máy tính của bạn là nguyên nhân, không phải máy chủ.
  • Thử bằng một trình duyệt khác. Chỉ Chrome lỗi còn Firefox thì không thường là cache TLS của Chrome hoặc một tiện ích mở rộng.
  • Dùng một công cụ kiểm tra SSL trực tuyến từ máy chủ bên ngoài. Nếu nó cũng báo lỗi, vấn đề nằm ở máy chủ và bạn có thể bỏ qua toàn bộ phần kiểm tra phía máy khách.
💡 Nếu chỉ mình bạn gặp lỗi, hãy kiểm tra ngày giờ hệ thống trước tiên. Đồng hồ sai vài ngày làm mọi chứng chỉ trở thành "chưa hiệu lực" hoặc "đã hết hạn", và đây là nguyên nhân bị bỏ sót nhiều nhất.

Xem chuyện thật sự xảy ra bằng openssl

Trình duyệt che gần hết chi tiết. Một lệnh sẽ cho bạn thấy chính xác máy chủ gửi gì và bắt tay hỏng ở đâu.

Chạy: openssl s_client -connect trangcuaban.com:443 -servername trangcuaban.com. Ba dòng đầu tiên trong kết quả nói cho bạn gần như mọi thứ cần biết.

Kết quả bạn thấyNghĩa là gì
Verify return code: 0 (ok)Chứng chỉ hợp lệ — vấn đề nằm ở phía máy khách
unable to get local issuer certificateThiếu chứng chỉ trung gian trong chuỗi
certificate has expiredChứng chỉ hết hạn — gia hạn là xong
Hostname mismatchChứng chỉ cấp cho tên miền khác
no protocols available / handshake failureTrình duyệt và máy chủ không có phiên bản TLS chung
💡 Thiếu chứng chỉ trung gian là trường hợp gây bối rối nhất, vì trình duyệt trên máy tính thường tự vá được nhờ chứng chỉ đã lưu, còn điện thoại và ứng dụng thì không. Kết quả là "trên máy tôi vẫn chạy" theo đúng nghĩa đen.

Nguyên nhân phía máy chủ, phổ biến nhất trước

  • Chứng chỉ đã hết hạn. Thường xảy ra khi tác vụ tự động gia hạn Let's Encrypt im lặng thất bại nhiều tháng trước mà không ai để ý.
  • Thiếu chứng chỉ trung gian. Bạn cài đúng chứng chỉ của mình nhưng quên phần chuỗi kèm theo, và chỉ một số thiết bị báo lỗi.
  • Chứng chỉ không khớp tên miền. Cấp cho "trangcuaban.com" nhưng khách truy cập "www.trangcuaban.com", hoặc ngược lại.
  • Máy chủ chỉ còn hỗ trợ TLS 1.2 trở lên trong khi có máy khách cũ, hoặc ngược lại: máy chủ quá cũ chỉ nói được TLS 1.0 mà trình duyệt hiện đại đã từ chối.
  • Sai cấu hình SNI trên máy chủ nhiều tên miền. Máy chủ trả về chứng chỉ mặc định thay vì chứng chỉ đúng của tên miền được yêu cầu.
  • Cloudflare đặt ở chế độ Full trong khi máy chủ gốc không có chứng chỉ hợp lệ, hoặc chế độ SSL không khớp với thực tế trên máy chủ.
  • Nginx nghe cổng 443 nhưng thiếu chỉ thị "ssl" hoặc trỏ sai đường dẫn file chứng chỉ. Lỗi này luôn xuất hiện ngay sau một lần chỉnh cấu hình.

Nguyên nhân phía máy khách, phổ biến nhất trước

  • Ngày giờ hệ thống sai. Chứng chỉ có mốc hiệu lực; đồng hồ lệch khiến chứng chỉ hoàn toàn hợp lệ bị coi là không hợp lệ.
  • Phần mềm diệt virus hoặc bộ lọc web can thiệp vào HTTPS. Nhiều sản phẩm chèn chứng chỉ của chính chúng vào giữa và làm hỏng bắt tay khi cấu hình không hoàn hảo.
  • Cache TLS của trình duyệt còn giữ trạng thái hỏng. Trong Chrome, xóa dữ liệu duyệt web thường giải quyết được.
  • Mạng công ty hoặc trường học chặn TLS. Thiết bị kiểm tra lưu lượng của tổ chức là nguyên nhân rất thường gặp khi lỗi chỉ xảy ra ở một nơi.
  • Trình duyệt hoặc hệ điều hành quá cũ. Máy chưa cập nhật nhiều năm sẽ không hỗ trợ các bộ mã hóa mà máy chủ hiện đại yêu cầu.
  • Tiện ích mở rộng VPN hoặc proxy. Thử tắt hết tiện ích, hoặc dùng cửa sổ ẩn danh với tiện ích đã vô hiệu hóa.

Sửa cho đúng và không để tái diễn

Phần lớn sự cố SSL trên máy chủ là sự cố của quy trình chứ không phải của cấu hình, và đó cũng là chỗ nên đầu tư công sức.

Xác minh việc tự động gia hạn thật sự đang chạy chứ đừng chỉ tin là nó chạy. Với certbot, "certbot renew --dry-run" cho biết lần gia hạn thật sẽ thành công hay thất bại. Rất nhiều website sập vì chứng chỉ chỉ đơn giản là tác vụ này đã hỏng từ lâu mà không ai kiểm tra.

Đặt cảnh báo hết hạn ở nơi bạn thực sự nhìn thấy. Ba mươi ngày trước hạn là khoảng thời gian hợp lý để xử lý mà không vội vàng.

Luôn cài đầy đủ chuỗi chứng chỉ. Nhà cung cấp cấp cho bạn cả chứng chỉ và phần trung gian; cài thiếu sẽ tạo ra lỗi chỉ xuất hiện trên một phần thiết bị và cực kỳ khó chẩn đoán.

Sau mỗi lần đổi cấu hình SSL, kiểm tra bằng openssl từ một máy khác chứ đừng chỉ mở trình duyệt trên máy của mình. Trình duyệt của bạn đã lưu quá nhiều thứ để cho ra một kết quả trung thực.

Muốn tự quản chứng chỉ và cấu hình TLS của mình?

Cloud VPS với quyền root đầy đủ — cài Let's Encrypt, đặt lịch tự gia hạn và chỉnh TLS theo ý mình. Từ ฿150/tháng.

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

Chứng chỉ của tôi còn hạn nhưng vẫn báo lỗi. Vì sao?

Nguyên nhân phổ biến nhất là thiếu chứng chỉ trung gian. Chứng chỉ của bạn hợp lệ nhưng trình duyệt không nối được nó tới một cơ quan cấp phát gốc đáng tin. Chạy "openssl s_client -connect tenmien.com:443"; nếu thấy dòng "unable to get local issuer certificate" thì đó chính là vấn đề.

Vì sao website mở được trên máy tính nhưng lỗi trên điện thoại?

Gần như luôn là chuỗi chứng chỉ không đầy đủ. Trình duyệt máy tính thường tự tải phần trung gian còn thiếu, còn thiết bị di động và ứng dụng thì không. Website không hỏng "chỉ trên điện thoại" — nó thiếu chuỗi ở mọi nơi, chỉ là máy tính che giấu điều đó.

Có nên bỏ qua cảnh báo và vào tiếp không?

Không, trừ khi đó là máy chủ của chính bạn và bạn biết chính xác vì sao có cảnh báo. Cảnh báo SSL cũng chính là thứ xuất hiện khi có người chặn giữa kết nối, nên tập thói quen bấm bỏ qua sẽ vô hiệu hóa chính lớp bảo vệ đó.

Lỗi SSL ảnh hưởng thứ hạng tìm kiếm thế nào?

Trực tiếp và nhanh chóng. Googlebot không hoàn tất được bắt tay nên không lấy được nội dung, trang không thu thập được thì không ở lại chỉ mục. HTTPS cũng là một tín hiệu xếp hạng, nên chứng chỉ hỏng vừa chặn thu thập vừa mất tín hiệu đó cùng lúc.