Cách sửa lỗi chứng chỉ SSL
Cảnh báo của trình duyệt khiến khách truy cập bỏ đi ngay khi vừa đến, nhưng nguyên nhân thường chỉ là một trong vài lỗi đơn giản. Dưới đây là cách xác định lỗi bạn đang gặp và khắc phục.
Xác định bạn đang gặp lỗi nào
Nhập tên miền của bạn vào SSL Checker, hoặc chạy lệnh sau trên máy có OpenSSL:
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates
Kết quả cho biết chứng chỉ cấp cho ai, do ai cấp và khi nào hết hạn. Đối chiếu thông tin đó với các mục bên dưới.
Chứng chỉ đã hết hạn
Đây là nguyên nhân phổ biến nhất, và thường có nghĩa là quá trình gia hạn tự động đã thất bại. Với Let’s Encrypt và Certbot, hãy kiểm tra gia hạn trước, rồi mới gia hạn thật:
sudo certbot renew --dry-run
sudo certbot renew
sudo systemctl reload nginx
Nếu bước kiểm tra thất bại, lý do thường gặp là cổng 80 bị chặn hoặc một chuyển hướng làm chặn yêu cầu xác thực. Các nền tảng lưu trữ sẵn thường tự gia hạn, vì vậy hãy kiểm tra xem DNS của tên miền vẫn trỏ đúng về nền tảng đó hay chưa.
Tên miền không khớp
Chứng chỉ phải liệt kê đúng địa chỉ mà khách truy cập sử dụng. Chứng chỉ cho example.com sẽ không bao gồm www.example.com nếu không khai báo cả hai. Hãy cấp lại chứng chỉ với cả hai tên miền:
sudo certbot --nginx -d example.com -d www.example.com
Chuỗi chứng chỉ chưa đầy đủ
Trang web của bạn có thể hoạt động trên một số trình duyệt nhưng lỗi trên trình duyệt khác, hoặc lỗi trên điện thoại. Thường điều này có nghĩa là máy chủ chưa gửi chứng chỉ trung gian. Trong Nginx, hãy trỏ đến toàn bộ chuỗi chứng chỉ, không chỉ chứng chỉ đơn lẻ:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
Thiếu biểu tượng ổ khóa hoặc trang cảnh báo nội dung hỗn hợp
Chứng chỉ vẫn ổn, nhưng trang tải một hình ảnh hoặc script qua http://. Mở bảng điều khiển (console) của trình duyệt để xem tệp nào, rồi đổi thành https://. Nếu trang của bạn vẫn phản hồi qua HTTP thuần, hãy thiết lập chuyển hướng và kiểm tra lại bằng Redirect Checker.
Chỉ một người thấy lỗi
Nếu SSL Checker báo đạt nhưng một thiết bị vẫn báo lỗi, nguyên nhân nằm ở chính thiết bị đó. Đồng hồ hệ thống sai là lý do kinh điển, tiếp theo là phần mềm diệt virus hoặc mạng công ty đang kiểm tra lưu lượng.
Ngăn lỗi tái diễn
- Sau mỗi thay đổi trên máy chủ, hãy xác nhận tính năng gia hạn tự động vẫn hoạt động bằng lệnh kiểm tra thử (dry run).
- Đặt nhắc nhở trên lịch hoặc cảnh báo thời gian hoạt động trước ngày hết hạn.
- Sau khi sửa xong một tên miền, hãy thêm các header bảo mật như HSTS, nhưng chỉ khi HTTPS đã hoạt động ở mọi nơi.