Chứng chỉ SSL hết hạn: dấu hiệu, cách kiểm tra và gia hạn (kể cả miễn phí)
- Khi chứng chỉ SSL hết hạn, trình duyệt hiện cảnh báo toàn trang và phần lớn khách sẽ không vào tiếp.
- Xem ngày hết hạn qua biểu tượng ổ khoá trên trình duyệt hoặc lệnh
openssl. - Let's Encrypt và Cloudflare cấp chứng chỉ miễn phí. Quan trọng là bật tự động gia hạn và kiểm tra rằng nó thật sự chạy.
Chứng chỉ SSL (chính xác hơn là TLS) giúp website chạy https://: dữ liệu được mã hoá và trình duyệt xác nhận khách đang kết nối đúng tên miền của bạn. Qua ngày hết hạn, dù website vẫn chạy, khách sẽ gặp trang cảnh báo đỏ thay vì cửa hàng của bạn.
Thời hạn chứng chỉ ngày càng ngắn: chứng chỉ Let's Encrypt hiện có hiệu lực 90 ngày, và theo lộ trình của CA/Browser Forum, thời hạn tối đa của mọi chứng chỉ công khai giảm dần từ năm 2026 (còn 200 ngày) xuống 47 ngày vào năm 2029. Gia hạn bằng tay vì thế dễ quên; hãy tự động hoá.
Dấu hiệu chứng chỉ SSL đã hết hạn
- Trang cảnh báo toàn màn hình: Chrome báo “Kết nối của bạn không phải là kết nối riêng tư” kèm mã
NET::ERR_CERT_DATE_INVALID; Firefox hiện trang cảnh báo rủi ro bảo mật với mãSEC_ERROR_EXPIRED_CERTIFICATE; Safari báo kết nối không riêng tư. - Tích hợp ngừng hoạt động: ứng dụng di động, cổng thanh toán, webhook báo lỗi chứng chỉ.
- Khách nhắn hỏi “web bị virus à?”, đơn hàng và lượt truy cập giảm đột ngột.
Lưu ý: nếu đồng hồ trên máy khách bị sai, họ cũng có thể thấy lỗi ngày tháng dù chứng chỉ còn hạn. Hãy tự kiểm tra từ bên ngoài trước khi kết luận.
Cách kiểm tra ngày hết hạn
1. Trên trình duyệt
Bấm biểu tượng bên trái thanh địa chỉ, chọn mục kết nối an toàn rồi xem chứng chỉ; dòng “Valid to” / “Expires on” là ngày hết hạn.
2. Bằng lệnh openssl
Trên máy có OpenSSL (macOS, Linux, hoặc Git Bash trên Windows):
echo | openssl s_client -connect shopcuaban.vn:443 -servername shopcuaban.vn 2>/dev/null | openssl x509 -noout -subject -issuer -dates
Dòng notAfter= là ngày hết hạn (giờ GMT). Tham số -servername cần thiết khi máy chủ phục vụ nhiều tên miền; thiếu nó, bạn có thể nhận nhầm chứng chỉ của tên miền khác.
3. Bằng công cụ kiểm tra SSL, HTTPS
Công cụ kiểm tra SSL, HTTPS cho biết website có kết nối HTTPS được không (chứng chỉ hết hạn hoặc sai tên miền thường làm bước này thất bại), có chuyển http:// sang https://, có HSTS và mixed content không. Công cụ còn đọc chứng chỉ và cho biết số ngày còn lại, ngày hết hạn và bên cấp.
Nhập tên miền để kiểm tra kết nối HTTPS, chuyển hướng http sang https, HSTS và mixed content. Miễn phí, vài giây.
Gia hạn miễn phí: các lựa chọn
Hosting có sẵn Let's Encrypt
Phần lớn hosting dùng cPanel, DirectAdmin, Plesk… có mục SSL miễn phí (AutoSSL hoặc Let's Encrypt): bật một lần, hosting tự gia hạn. Nếu vẫn hết hạn, xem thông báo lỗi trong mục đó hoặc hỏi nhà cung cấp.
Máy chủ riêng (VPS): certbot
Certbot là công cụ phổ biến để lấy chứng chỉ Let's Encrypt. Trên VPS chạy Nginx:
sudo certbot --nginx -d shopcuaban.vn -d www.shopcuaban.vn
Với Apache, thay --nginx bằng --apache. Cài theo hướng dẫn chính thức (snap hoặc gói của hệ điều hành), certbot tự tạo tác vụ gia hạn định kỳ (systemd timer hoặc cron). Kiểm tra nó thật sự hoạt động:
sudo certbot renew --dry-run # chạy thử gia hạn, không thay chứng chỉ thật
systemctl list-timers | grep certbot # hoặc xem /etc/cron.d/certbot nếu dùng cron
sudo certbot certificates # liệt kê chứng chỉ và ngày hết hạn
Certbot chỉ thật sự gia hạn khi chứng chỉ sắp hết hạn (mặc định còn khoảng 30 ngày với chứng chỉ 90 ngày), nên chạy hằng ngày là an toàn. Sau khi gia hạn, web server phải được nạp lại: plugin --nginx/--apache tự làm việc này; nếu dùng certonly, thêm --deploy-hook "systemctl reload nginx".
Cloudflare
Nếu tên miền đi qua Cloudflare (đám mây cam bật), Cloudflare tự cấp và gia hạn chứng chỉ cho đoạn từ khách tới Cloudflare. Đoạn từ Cloudflare về máy chủ vẫn cần chứng chỉ: chọn chế độ SSL Full (strict) và cài trên máy chủ một chứng chỉ hợp lệ, ví dụ Cloudflare Origin Certificate (thời hạn dài, chỉ Cloudflare tin) hoặc Let's Encrypt. Tránh chế độ Flexible, vì đoạn về máy chủ không được mã hoá.
Lưu ý: chỉ chuyển sang Full (strict) sau khi máy chủ đã có chứng chỉ hợp lệ cho đúng tên miền; nếu không, website sẽ báo lỗi 526 ngay lập tức.
Vì sao tự động gia hạn vẫn thất bại
- DNS đã đổi: tên miền trỏ sang máy chủ hoặc CDN mới, nên Let's Encrypt không xác minh được qua máy chủ cũ.
- Đường dẫn xác minh bị chặn:
/.well-known/acme-challenge/bị chuyển hướng sai, bị plugin bảo mật, tường lửa hoặc.htaccesschặn; cổng 80 bị đóng. - Bản ghi CAA trong DNS không cho phép đơn vị cấp chứng chỉ bạn đang dùng.
- Chạm giới hạn số lần cấp của Let's Encrypt do chạy lệnh cấp mới quá nhiều khi thử nghiệm; hãy dùng
--dry-runhoặc môi trường staging. - Gia hạn xong nhưng chưa nạp lại web server, nên khách vẫn thấy chứng chỉ cũ.
- Tác vụ tự động bị mất sau khi chuyển máy chủ hoặc nâng cấp hệ điều hành.
- Chứng chỉ trả phí quên thanh toán, hoặc email nhắc gia hạn gửi tới hộp thư không còn ai đọc.
- Thiếu tên miền: chứng chỉ chỉ có
shopcuaban.vnmà không cówww.shopcuaban.vn(hoặc ngược lại).
Khi chứng chỉ đã hết hạn: làm gì ngay
- Xác nhận từ bên ngoài bằng lệnh
opensslở trên hoặc mở website trên một thiết bị khác. - Gia hạn: bấm cấp lại trong bảng điều khiển hosting, hoặc chạy
sudo certbot renewtrên VPS và đọc kỹ thông báo lỗi nếu có. - Nạp lại web server, rồi kiểm tra cả địa chỉ có và không có
www. - Tìm nguyên nhân tự gia hạn thất bại trong danh sách trên và sửa, để lần sau không lặp lại.
Đừng để phải biết qua khách hàng
Nên có thêm một lớp nhắc độc lập với tự động gia hạn. Khi bạn bật cảnh báo email và xác minh sở hữu tên miền, WebsiteScanner quét lại website hằng tuần và gửi email khi chứng chỉ SSL còn 14 ngày hoặc ít hơn, hay không hợp lệ. Gói WebsiteScanner PRO thêm giám sát website sập 5 phút/lần và quét chuyên sâu lỗ hổng.
Câu hỏi thường gặp
Chứng chỉ SSL miễn phí có kém an toàn hơn chứng chỉ trả phí không?
Về mã hoá thì không. Chứng chỉ Let's Encrypt và chứng chỉ trả phí loại DV dùng cùng chuẩn mã hoá và đều được trình duyệt tin cậy. Chứng chỉ trả phí khác chủ yếu ở mức xác minh doanh nghiệp (OV, EV) và dịch vụ hỗ trợ; chứng chỉ Let's Encrypt có thời hạn ngắn nên cần bật tự động gia hạn.
SSL hết hạn thì website có bị mất dữ liệu không?
Không. Dữ liệu vẫn nguyên, nhưng trình duyệt hiện cảnh báo toàn trang nên phần lớn khách sẽ rời đi, và các tích hợp như cổng thanh toán, webhook có thể ngừng gọi về website.
Đã gia hạn mà trình duyệt vẫn báo hết hạn là sao?
Thường là web server chưa được nạp lại nên vẫn dùng chứng chỉ cũ, hoặc chứng chỉ mới được cài ở nơi khác với nơi đang phục vụ website, ví dụ CDN hay bộ cân bằng tải. Hãy nạp lại web server và kiểm tra lại từ bên ngoài.
Dùng Cloudflare thì có cần chứng chỉ trên máy chủ không?
Nên có. Cloudflare cấp chứng chỉ cho đoạn từ khách tới Cloudflare. Để đoạn từ Cloudflare về máy chủ cũng được mã hoá và xác thực, hãy cài chứng chỉ hợp lệ trên máy chủ (Cloudflare Origin Certificate hoặc Let's Encrypt) rồi chọn chế độ Full (strict).
Kiểm tra kết nối HTTPS, security headers, file nhạy cảm bị lộ và dấu hiệu mã độc trong một lần quét miễn phí.