Cách khắc phục lỗi NET::ERR_CERT_REVOKED (Phía Máy chủ & Máy khách)

intermediate🔒 SSL/TLS2026-04-26| Trình duyệt Web (Chrome, Edge, Brave), Windows, macOS, Linux, Nginx, Apache

Error Message

NET::ERR_CERT_REVOKED
#ssl#tls#bảo mật#devops#chrome#nginx

Lỗi NET::ERR_CERT_REVOKED là gì?

Hầu hết các lỗi SSL xảy ra do chứng chỉ đã hết hạn. Lỗi NET::ERR_CERT_REVOKED thì khác và nghiêm trọng hơn. Nó có nghĩa là Tổ chức phát hành chứng chỉ (CA) đã chủ động hủy bỏ chứng chỉ trước ngày hết hạn dự kiến. Hãy coi nó như một chiếc thẻ tín dụng bị báo mất; ngân hàng (CA) sẽ yêu cầu các đơn vị chấp nhận thẻ (trình duyệt) không chấp nhận nó nữa.

Các trình duyệt như Chrome và Edge rất khắt khe về vấn đề này. Chúng sẽ chặn hoàn toàn kết nối để ngăn chặn nguy cơ đánh cắp dữ liệu. Nếu một CA thu hồi chứng chỉ, điều đó thường có nghĩa là tính bảo mật của trang web không còn được đảm bảo.

Tại sao chứng chỉ bị thu hồi

  • Lộ Private Key: Đây là lý do phổ biến nhất. Nếu Private Key vô tình bị tải lên kho lưu trữ GitHub công khai hoặc bị rò rỉ trong một vụ xâm nhập máy chủ, chủ sở hữu phải thu hồi chứng chỉ ngay lập tức.
  • Thay đổi quyền sở hữu tên miền: Nếu bạn bán tên miền của mình, CA có thể thu hồi chứng chỉ cũ để ngăn chủ sở hữu trước đó chặn lưu lượng truy cập.
  • Cấp phát không chính xác: Đôi khi các CA nhận ra họ đã cấp chứng chỉ cho sai người hoặc không tuân thủ các tiêu chuẩn ngành. Ví dụ, vào năm 2020, Let's Encrypt đã phải thu hồi hàng triệu chứng chỉ do một lỗi trong mã xác thực của họ.
  • Lỗi DNS và OCSP: Các sự cố mạng nội bộ đôi khi khiến trình duyệt của bạn không thể kết nối tới máy chủ Online Certificate Status Protocol (OCSP). Khi trình duyệt không thể xác minh trạng thái, nó có thể mặc định báo lỗi đã bị thu hồi.

Giải pháp cho chủ sở hữu và quản trị viên trang web

Nếu trang web của bạn hiển thị lỗi này, khách truy cập đang thấy một cảnh báo bảo mật nghiêm trọng. Các thủ thuật phía máy khách (client-side) sẽ không giải quyết được vấn đề này cho họ. Bạn cần thay thế chứng chỉ tại nguồn.

1. Buộc gia hạn chứng chỉ

Cách khắc phục nhanh nhất là tạo một chứng chỉ hoàn toàn mới. Nếu bạn sử dụng Let's Encrypt, đừng đợi gia hạn tự động. Hãy ép buộc gia hạn ngay bây giờ bằng Certbot:

sudo certbot renew --force-renewal

Đối với các nhà cung cấp thương mại như DigiCert hoặc Namecheap, bạn sẽ cần thực hiện "Reissue" (Cấp lại) chứng chỉ thông qua bảng điều khiển của họ. Quá trình này yêu cầu một Certificate Signing Request (CSR) mới.

# Tạo RSA key 2048-bit và CSR mới
openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr

2. Cập nhật cấu hình máy chủ

Sau khi nhận được các tệp mới, hãy trỏ máy chủ web của bạn tới các tệp .crt.key mới. Quên cập nhật đường dẫn là một lỗi phổ biến khiến chứng chỉ cũ đã bị thu hồi vẫn tiếp tục hoạt động.

Cấu hình Nginx:

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}

Áp dụng các thay đổi bằng cách tải lại dịch vụ:

sudo systemctl reload nginx

Giải pháp cho người dùng và lập trình viên

Nếu bạn thấy lỗi này trên các trang web lớn như Google hoặc Amazon, vấn đề có thể nằm ở phía bạn. Hãy thử các bước sau để xóa các xung đột cục bộ.

1. Sửa đồng hồ hệ thống

Mã hóa phụ thuộc rất nhiều vào mốc thời gian (timestamp). Nếu máy tính của bạn cho rằng hiện tại là năm 2015 hoặc 2030, nó sẽ không thể xác thực trạng thái thu hồi của chứng chỉ. Ngay cả sự sai lệch năm phút cũng có thể gây ra sự cố.

  • Windows: Nhấp chuột phải vào đồng hồ trên thanh tác vụ > Adjust date/time > Sync now.
  • macOS: System Settings > General > Date & Time > Bật "Set time and date automatically."

2. Xóa bộ nhớ đệm SSL

Windows lưu trữ thông tin chứng chỉ trong bộ nhớ đệm cục bộ. Nếu một chứng chỉ đã bị thu hồi và sau đó được khắc phục, hệ điều hành của bạn vẫn có thể đang xem trạng thái cũ. Việc xóa trạng thái SSL sẽ buộc hệ thống phải kiểm tra lại từ đầu.

  • Tìm kiếm Internet Options trong menu Start.
  • Chọn tab Content.
  • Nhấp vào Clear SSL State.
  • Khởi động lại Chrome hoặc Edge và thử truy cập lại trang web.

3. Đặt lại cấu hình mạng

Cài đặt DNS bị hỏng có thể ngăn máy tính của bạn giao tiếp với máy chủ Danh sách thu hồi chứng chỉ (CRL). Việc đặt lại ngăn xếp mạng (network stack) thường sẽ giải quyết được vấn đề.

# Windows (Chạy Command Prompt với quyền Admin)
ipconfig /flushdns
netsh winsock reset

# macOS
sudo killall -HUP mDNSResponder

Cách xác minh việc khắc phục

Đừng chỉ làm mới trang. Các trình duyệt nổi tiếng với việc lưu bộ nhớ đệm các lỗi. Hãy sử dụng terminal hoặc công cụ của bên thứ ba để xem máy chủ thực sự đang gửi gì.

Kiểm tra qua OpenSSL

Chạy lệnh này để xem chi tiết chứng chỉ thô từ máy chủ của bạn:

openssl s_client -connect yourdomain.com:443 -servername yourdomain.com

Tìm dòng Verify return code: 0 (ok). Nếu bạn thấy bất kỳ kết quả nào khác, máy chủ vẫn đang cung cấp một chứng chỉ lỗi.

Sử dụng SSL Labs

Công cụ Qualys SSL Labs là tiêu chuẩn của ngành. Hãy nhập URL của bạn và đợi quá trình quét. Kiểm tra dòng "Revocation status"; nó phải ghi rõ ràng là "Good (not revoked)".

Mẹo phòng ngừa chủ động

  • Bật OCSP Stapling: Điều này cho phép máy chủ của bạn thay mặt người dùng thực hiện kiểm tra thu hồi. Nó giúp trang web của bạn nhanh hơn và ngăn trình duyệt gặp lỗi nếu không thể kết nối tới máy chủ của CA.
  • Thắt chặt quyền hạn: Đặt quyền cho Private Key của bạn thành chmod 600. Chỉ người dùng root hoặc tiến trình máy chủ web mới được quyền xem tệp này.
  • Sử dụng công cụ giám sát: Các công cụ như UptimeRobot có thể giám sát tình trạng SSL của bạn. Chúng sẽ cảnh báo bạn ngay khi chứng chỉ bị thu hồi hoặc hết hạn, thường là trước khi người dùng của bạn nhận thấy.

Related Error Notes