Khách hàng vừa nhắn tin: "Website của anh/chị hiện dòng 'Not Secure', em không dám nhập thông tin nữa." Câu đó đủ để ngày hôm đó trở nên rất tệ. Trình duyệt chuyển biểu tượng từ ổ khóa xanh sang chữ cảnh báo đỏ — và với khách, đó là tín hiệu "đừng tin trang này".
Điều hay gây nhầm lẫn là SSL đã cài không có nghĩa là mọi thứ đều ổn. Bạn có thể đã mua và gắn chứng chỉ SSL cho cuahang.vn, nhưng ổ khóa vẫn vắng mặt — vì một trong 7 nguyên nhân dưới đây đang phá vỡ kết nối an toàn mà trình duyệt kỳ vọng.
Chẩn đoán nhanh: nhập tên miền vào công cụ phân tích không có ổ khóa — kết quả hiện ngay nguyên nhân cụ thể: mixed content, chain thiếu, cert sai hay cái gì khác.
Vì sao website "đã có SSL" vẫn hiển thị Not Secure?
"Not Secure" xuất hiện khi trình duyệt phát hiện ít nhất một vấn đề trong kết nối HTTPS — không nhất thiết là "chưa có cert". Dưới đây là 7 nguyên nhân phổ biến nhất:
#Nguyên nhânMô tả ngắn1Mixed contentTrang HTTPS nhúng hình ảnh, script hoặc CSS từ URL dạng http://2Cert hết hạnChứng chỉ đã qua ngày hết hạn — trình duyệt từ chối hoàn toàn3Thiếu intermediate chainChỉ cài cert gốc, thiếu file chain trung gian của nhà cấp phát4Sai CN/SANCert cấp cho www.cuahang.vn nhưng truy cập cuahang.vn (hoặc ngược lại)5Cert không khớp private keyCài cert nhưng dùng sai private key hoặc cert của domain khác6Redirect về HTTPServer chưa bắt tất cả HTTP redirect về HTTPS, để lọt một số request7Trang con vẫn HTTPSubdomain hoặc đường dẫn nội bộ vẫn phục vụ qua HTTP
Mỗi nguyên nhân có cách sửa khác nhau, nên xác định đúng nguyên nhân trước mới tránh sửa nhầm.
4 bước chẩn đoán và sửa lỗi Not Secure
Bước 1 — Phân tích nguyên nhân bằng công cụ "Why No Padlock"
Thay vì đoán mò, bạn để công cụ quét trang và chỉ ra thẳng vấn đề — tốn chưa tới 30 giây.
👉 Kiểm tra: công cụ phân tích không có ổ khóa (phát hiện mixed content, chain thiếu, cert sai tên miền).
Ví dụ: nhập shop.tencongty.vn, công cụ báo "2 hình ảnh đang tải qua HTTP" kèm đường dẫn cụ thể — bạn biết ngay phải đổi 2 URL đó từ http:// sang https://.
Lỗi hay gặp:
Chỉ kiểm tra trang chủ — mixed content thường ẩn ở trang sản phẩm, bài viết, trang thanh toán. Nên quét thêm vài URL đại diện để có bức tranh toàn cảnh.
Đọc cảnh báo Console của DevTools rồi tự sửa — Console chỉ liệt kê URL bị block, không cho biết chain hay cert có vấn đề gì không.
Bước 2 — Kiểm tra chi tiết chứng chỉ và chuỗi chain
Khi Bước 1 cho thấy vấn đề không phải mixed content mà liên quan đến cert, bước tiếp theo là đọc chi tiết chứng chỉ: chain có đủ không, tên miền có khớp không, giao thức TLS nào đang dùng.
👉 Kiểm tra SSL: công cụ kiểm tra SSL (chain, CN/SAN, ngày hết hạn, giao thức TLS).
Những gì cần chú ý trong kết quả:
Chain: cần có đủ cả cert gốc lẫn intermediate. Nếu thiếu intermediate, một số thiết bị — đặc biệt Android cũ — sẽ không tin tưởng cert dù trình duyệt trên máy tính vẫn hiển thị ổ khóa xanh bình thường.
SAN (Subject Alternative Names): liệt kê các tên miền cert bao gồm. Nếu
cuahang.vnkhông có trong danh sách nhưngwww.cuahang.vnthì có, đó là nguyên nhân lỗi rõ ràng.Giao thức: TLS 1.0 và 1.1 bị Chrome/Firefox chặn từ 2020. Nếu server đang chạy phiên bản cũ, cần nâng lên TLS 1.2 hoặc 1.3.
Lỗi hay gặp:
Mua cert wildcard
*.tencongty.vnmà không thêm entry chotencongty.vngốc — wildcard*chỉ bao phủ một cấp subdomain, không bao gồm domain trống.Cài cert trên một port nhưng kiểm tra port khác — thường gặp khi server dùng cấu hình đa port hoặc đứng sau reverse proxy.
Bước 3 — Kiểm tra ngày hết hạn (ưu tiên hành động ngay)
Nếu cert đã hết hạn, đây là việc khẩn cấp nhất và phải xử lý trước mọi thứ khác — vì khi cert quá hạn, trình duyệt chặn hoàn toàn, không có nút "bỏ qua" cho người dùng.
👉 Kiểm tra hạn SSL: công cụ kiểm tra hạn SSL (ngày hết hạn, số ngày còn lại, trạng thái cảnh báo).
Cert còn nhiều hơn 30 ngày? Ổn — ưu tiên sửa các lỗi khác trước. Dưới 14 ngày? Đưa gia hạn lên đầu danh sách ngay hôm nay. Đã hết hạn? Dừng lại và gia hạn hoặc cấp cert mới ngay lập tức, mọi thứ khác phải chờ.
Bước 4 — Xác nhận HSTS đã bật để ngăn request lọt HTTP
Ngay cả khi cert đúng hoàn toàn, nếu HSTS (HTTP Strict Transport Security) chưa bật, một số client vẫn thử HTTP trước rồi mới được redirect. HSTS báo trình duyệt "luôn dùng HTTPS" mà không cần qua redirect.
👉 Kiểm tra HSTS: công cụ kiểm tra HSTS (header Strict-Transport-Security, max-age, includeSubDomains, preload).
Giá trị tối thiểu nên có:
Strict-Transport-Security: max-age=31536000; includeSubDomainsLỗi hay gặp:
Bật
includeSubDomainskhi còn subdomain chạy HTTP — tất cả subdomain bị kéo theo HTTPS ngay lập tức, gây truy cập bị từ chối nếu chúng chưa có cert.Bật HSTS khi cert vẫn còn lỗi — một khi HSTS đã kích hoạt, người dùng bị chặn cứng cho tới khi cert đúng. Hãy sửa cert xong hẳn rồi mới bật HSTS.
Sau khi sửa — bao lâu ổ khóa xanh trở lại?
Mixed content, chain, SAN: sửa xong, reload trang và xóa cache trình duyệt nếu cần → ổ khóa xanh xuất hiện ngay lập tức.
Gia hạn hoặc đổi cert mới: sau khi cài và restart web server (nginx, apache, IIS) → hiệu lực ngay lập tức.
HSTS preload list: sau khi đăng ký tại hstspreload.org, danh sách cập nhật vào Chrome/Firefox mất vài tuần đến vài tháng — không phải tức thì, nên kiên nhẫn.
Vẫn thấy lỗi sau khi sửa? Thử mở tab ẩn danh (Incognito) hoặc dùng trình duyệt khác trước khi kết luận — có thể trình duyệt đang giữ cache cert cũ.
Câu hỏi thường gặp (FAQ)
Đã cài SSL rồi nhưng vẫn Not Secure — nguyên nhân phổ biến nhất là gì? Phổ biến nhất là mixed content (hình ảnh hoặc script đang tải qua HTTP) hoặc thiếu intermediate chain. Dùng công cụ phân tích không có ổ khóa để xác định đúng nguyên nhân, thay vì mò từng đầu mối.
Mixed content là gì và sửa thế nào? Mixed content là khi trang HTTPS nhúng tài nguyên từ URL http://. Cách sửa: tìm tất cả đường dẫn http:// trong nội dung và template rồi đổi sang https://, hoặc dùng đường dẫn tương đối //. Trong WordPress có plugin hỗ trợ tìm và thay tự động như Really Simple SSL.
SSL Let's Encrypt miễn phí có ổ khóa xanh không? Có. Let's Encrypt cấp chứng chỉ DV (Domain Validated) hợp lệ — trình duyệt hiển thị ổ khóa xanh như cert trả phí. Sự khác biệt nằm ở thời hạn 90 ngày (cần gia hạn tự động), không có bảo hiểm thương mại và không hiển thị tên tổ chức (chỉ OV/EV mới có tính năng này).
Cert còn hạn nhưng vẫn bị cảnh báo — có thể vì sao? Hay gặp nhất: web server đang dùng cert cũ từ cache, chưa nhận cert mới sau khi cài. Thử sudo nginx -t && sudo systemctl reload nginx (hoặc tương đương với server của bạn) rồi kiểm tra lại bằng công cụ kiểm tra SSL.
BKNS Tools — bộ công cụ kiểm tra SSL & HTTPS miễn phí. Phân tích không có ổ khóa · Kiểm tra SSL · Hạn SSL · Kiểm tra HSTS — không cần đăng nhập.




