Sự cố: Khi mọi thứ đột ngột ngừng hoạt động
Tôi đang thực hiện một dự án cục bộ thì đột nhiên mọi trang web HTTPS trên Chrome đều hiện thông báo "Kết nối của bạn không phải là riêng tư". Mã lỗi là NET::ERR_CERT_DATE_INVALID. Ban đầu, tôi cứ ngỡ Google và GitHub để chứng chỉ hết hạn cùng lúc. Điều đó là không thể. Vấn đề nằm ngay ở khay hệ thống: đồng hồ của tôi chạy chậm gần sáu tiếng.
Trình duyệt rất khắt khe về thời gian. Chúng xác thực chứng chỉ SSL/TLS bằng cách kiểm tra thời gian hệ thống hiện tại so với thời hạn hiệu lực của chứng chỉ. Hầu hết các chứng chỉ hiện đại có thời hạn tối đa 398 ngày. Nếu đồng hồ của bạn bị lệch dù chỉ vài phút, trình duyệt sẽ kích hoạt chế độ ngắt kết nối an toàn.
Nguyên nhân gốc rễ: Tại sao thời gian bị lệch
Xác thực SSL không chỉ là về ngày tháng. Nó bảo vệ bạn khỏi "tấn công phát lại" (replay attacks). Nếu kẻ tấn công thu thập một chứng chỉ cũ đã bị xâm phạm, máy tính của bạn sẽ sử dụng thời gian hiện tại để từ chối nó.
Một số yếu tố có thể khiến đồng hồ của bạn mất đồng bộ:
- Lỗi pin CMOS: Trên các bo mạch chủ cũ, viên pin 3V duy trì đồng hồ khi tắt nguồn có thể đã hết.
- Độ lệch khi chạy song song (Dual-Boot): Windows và Linux xử lý thời gian BIOS khác nhau. Windows dùng Giờ địa phương (Local Time), trong khi Linux dùng Giờ quốc tế (UTC). Việc chuyển đổi giữa chúng thường gây ra sự nhảy vọt từ 5 đến 8 tiếng.
- Sự cố Sleep trên WSL2: Nếu bạn dùng Windows Subsystem for Linux, đồng hồ thường tạm dừng khi laptop đi vào chế độ ngủ.
- Chặn bởi Tường lửa: Một số tường lửa doanh nghiệp chặn cổng UDP 123, vốn cần thiết cho việc đồng bộ Giao thức Thời gian Mạng (NTP).
Sửa lỗi thủ công: Phương pháp giao diện (GUI) nhanh chóng
Nếu bạn cần sửa lỗi trong mười giây, hãy sử dụng giao diện hệ điều hành để bắt buộc đồng bộ.
Windows 10/11
- Nhấp chuột phải vào đồng hồ ở Taskbar và chọn Adjust date/time (Điều chỉnh ngày/giờ).
- Xác nhận Set time automatically (Đặt giờ tự động) đang ở trạng thái BẬT.
- Nhấn Sync now (Đồng bộ ngay). Nếu thất bại, hãy kiểm tra kết nối internet và thử lại.
macOS
- Mở System Settings > General > Date & Time.
- Tắt mục Set time and date automatically rồi bật lại.
- Xác nhận máy chủ được đặt thành
time.apple.com.
Cách sửa chuyên sâu: Sử dụng Terminal
Các công cụ dòng lệnh cung cấp khả năng quan sát tốt hơn. Chúng cho bạn biết chính xác tại sao việc đồng bộ thất bại.
Windows (Admin PowerShell)
Dịch vụ Windows Time (w32time) thỉnh thoảng bị treo. Việc đặt lại dịch vụ thường sẽ xóa bỏ lỗi chứng chỉ ngay lập tức.
# Dừng và đặt lại dịch vụ thời gian
net stop w32time
w32tm /unregister
w32tm /register
net start w32time
# Cưỡng bách đồng bộ lại và kiểm tra trạng thái
w32tm /resync /force
w32tm /query /status
Linux (Ubuntu/Debian)
Hầu hết các bản phân phối hiện đại sử dụng systemd-timesyncd. Bạn có thể quản lý dịch vụ này bằng timedatectl.
# Kiểm tra xem NTP có đang hoạt động không
timedatectl status
# Kích hoạt đồng bộ nếu nó đang bị tắt
sudo timedatectl set-ntp true
# Khởi động lại dịch vụ để bắt buộc cập nhật
sudo systemctl restart systemd-timesyncd
Sửa lỗi "Nhảy giờ" khi chạy song song (Dual-Boot)
Để ngăn Linux và Windows tranh giành đồng hồ BIOS, hãy yêu cầu Linux coi đồng hồ phần cứng là Giờ địa phương thay vì UTC.
timedatectl set-local-rtc 1 --adjust-system-clock
Giải quyết lỗi chậm giờ trên WSL2
WSL2 nổi tiếng với việc mất đồng bộ thời gian sau khi laptop quay lại từ chế độ ngủ. Nếu curl hoặc apt update thất bại với lỗi SSL bên trong WSL, hãy chạy lệnh này trong terminal Linux của bạn:
# Buộc nhân Linux lấy thời gian từ đồng hồ phần cứng
sudo hwclock -s
Nếu cách đó thất bại, khởi động lại hoàn toàn WSL từ Windows PowerShell là lựa chọn cuối cùng:
wsl --shutdown
Xác minh: Lỗi đã thực sự được sửa chưa?
Đừng chỉ tin vào hiển thị đồng hồ. Hãy xác minh quá trình bắt tay (handshake).
- Kiểm tra độ lệch chính xác: Truy cập time.is. Nó sẽ cho bạn biết nếu đồng hồ bị lệch dù chỉ 0.1 giây.
- Kiểm tra bắt tay (handshake): Sử dụng
curlđể xem việc xác thực SSL có thành công mà không bị ảnh hưởng bởi cache của trình duyệt hay không.
curl -Iv https://www.google.com
Tìm dòng: `SSL certificate verify ok`.
- **Xóa Cache HSTS:** Nếu trang web vẫn báo lỗi, Chrome có thể đang ghi nhớ trạng thái "xấu". Hãy truy cập `chrome://net-internals/#hsts`, tìm "Delete domain security policies" và nhập tên miền vào.
## Lời kết
Nếu đồng hồ của bạn đã chuẩn nhưng lỗi vẫn còn, hãy kiểm tra mạng. Các cổng Wi-Fi công cộng (như ở sân bay) thường chặn lưu lượng bằng chứng chỉ tự ký. Điều này sẽ kích hoạt cảnh báo `NET::ERR_CERT_DATE_INVALID` tương tự cho đến khi bạn đăng nhập vào trang chào của họ.

