Nội dung hỗn hợp: có SSL web vẫn báo không an toàn

Website đã cài SSL nhưng trình duyệt vẫn báo không an toàn vì còn ảnh, script hay font tải qua HTTP. Bài viết chỉ cách tìm đúng chỗ sai và sửa từng bước.

Website đã cài chứng chỉ SSL, gõ địa chỉ vẫn thấy chữ HTTPS, nhưng thanh địa chỉ Chrome lại hiện tam giác cảnh báo hoặc chữ "Không an toàn" thay vì ổ khóa. Phần lớn trường hợp này không phải do chứng chỉ hỏng, mà do nội dung hỗn hợp: trang HTTPS còn gọi ảnh, file CSS, JavaScript hoặc font qua giao thức chưa mã hóa. Bài này chỉ cách tìm đúng tài nguyên gây lỗi và sửa theo đúng thứ tự, không cần cài lại SSL.

Minh hoạ cho bài Nội dung hỗn hợp: có SSL web vẫn báo không an toàn

Nội dung hỗn hợp là gì mà website có SSL vẫn báo không an toàn

Nội dung hỗn hợp là khi một trang đã tải qua HTTPS còn nhúng thêm ảnh, script, stylesheet hoặc font từ đường dẫn HTTP không mã hóa. Trình duyệt phát hiện có phần tử tải qua kênh không an toàn nằm bên trong trang đã mã hóa, nên gỡ ổ khóa xanh dù chứng chỉ vẫn còn hạn và cấu hình máy chủ hoàn toàn đúng.

Lỗi này hay xuất hiện ở website chạy nhiều năm bằng HTTP rồi mới chuyển sang chứng chỉ SSL cho website doanh nghiệp: theme cũ gắn cứng đường dẫn HTTP trong file cấu hình, plugin chèn ảnh minh họa từ thư viện ngoài, hoặc bài viết nhúng video từ nguồn chưa hỗ trợ HTTPS. Chứng chỉ mới cài không sửa được những đường dẫn cũ này, vì chúng nằm trong nội dung và mã nguồn, không nằm trong phần cấu hình SSL.

Trình duyệt chặn nội dung hỗn hợp ra sao và cách tự tìm chỗ sai

Trình duyệt chia tài nguyên tải sai giao thức thành hai mức: loại chủ động như JavaScript, CSS, iframe bị chặn tải hoàn toàn vì có thể chèn mã độc vào trang; loại thụ động như ảnh, video, audio vẫn hiển thị bình thường nhưng trình duyệt gỡ ổ khóa và ghi cảnh báo trong Console.

Loại tài nguyênTrình duyệt xử lý ra saoCách sửa
JavaScript, CSS, font qua HTTPChặn tải hoàn toàn, có thể vỡ giao diện hoặc mất chức năng của trangĐổi đường dẫn sang HTTPS hoặc dùng đường dẫn tương đối bắt đầu bằng hai dấu gạch chéo
iframe nhúng từ HTTPChặn tải hoàn toàn, khung nhúng để trốngĐổi mã nhúng sang bản HTTPS của nhà cung cấp hoặc bỏ khung nhúng
Ảnh, video, audio qua HTTPVẫn hiển thị nhưng gỡ ổ khóa, ghi cảnh báo trong ConsoleTìm và thay đường dẫn trong bài viết, theme hoặc thư viện media
Đường dẫn form action qua HTTPForm vẫn gửi được nhưng cảnh báo dữ liệu đi không an toànSửa thuộc tính action trong theme hoặc plugin tạo form

Theo tài liệu Mixed content của MDN, từ năm 2020 Chrome đã chuyển sang tự động nâng cấp phần lớn tài nguyên loại thụ động lên HTTPS thay vì chỉ hiển thị cảnh báo như các phiên bản trước đó. Nâng cấp thất bại thì tài nguyên bị chặn hẳn chứ không tải lùi về bản chưa mã hóa nữa.

Muốn biết chính xác file nào đang gây lỗi, mở Chrome, nhấn F12 để mở DevTools rồi chuyển sang tab Console. Mọi tài nguyên tải sai giao thức hiện một dòng cảnh báo Mixed Content kèm đường dẫn cụ thể, không cần đoán mò từng dòng mã nguồn.

  1. Mở trang cần kiểm tra, nhấn F12 để mở DevTools
  2. Chuyển sang tab Console, tải lại trang bằng Ctrl+Shift+R để bỏ cache cũ
  3. Đọc từng dòng cảnh báo Mixed Content, copy đường dẫn file bị chặn hoặc bị cảnh báo
  4. Sang tab Network, lọc theo tên miền cũ để thấy toàn bộ request đang gọi qua giao thức chưa mã hóa
  5. Bấm vào biểu tượng ổ khóa hoặc thông tin trang trên thanh địa chỉ để xem trình duyệt liệt kê phần tử không an toàn nào

Cốc Cốc và Safari cũng có bảng thông tin bảo mật tương tự khi bấm vào biểu tượng cạnh địa chỉ trang. Ngoài DevTools, có thể chạy thêm công cụ kiểm tra bảo mật website để quét toàn bộ trang cùng lúc thay vì kiểm từng trang một.

Sửa đường dẫn HTTP trong bài viết và cấu hình website

Với ảnh chèn trực tiếp trong bài viết, mở lại bài, xóa ảnh cũ rồi chèn lại qua thư viện media để hệ thống tự gán đường dẫn HTTPS mới. Với theme và plugin, tìm trong file cấu hình những đường dẫn tuyệt đối trỏ về HTTP rồi đổi sang HTTPS hoặc dùng đường dẫn tương đối bắt đầu bằng hai dấu gạch chéo, để trình duyệt tự chọn đúng giao thức của trang đang chạy.

File CSS gọi font hoặc ảnh nền qua đường dẫn tuyệt đối HTTP cũng cần sửa tương tự. Nếu tài nguyên lấy từ CDN ngoài, kiểm xem nhà cung cấp đó có bản HTTPS không trước khi đổi, không phải CDN nào cũng hỗ trợ. Nếu chưa từng cài chứng chỉ cho site, có thể xem lại cách cài đặt SSL trên hosting và VPS trước khi xử lý các đường dẫn sai giao thức, vì thứ tự làm đúng giúp tránh phát sinh thêm lỗi mới.

Vừa xử lý lỗi mất ổ khóa vừa cần đổi gói SSL?

Bốn mức chứng chỉ DV từ 200.000đ/năm, đội kỹ thuật BizMaC cài đặt và bật HTTPS giúp, không tính phí phần cài đặt.

Xem bảng giá SSL

Sửa đường dẫn cứng trong database WordPress

WordPress lưu đường dẫn ảnh và liên kết nội bộ trực tiếp trong nội dung bài viết ở database, không tự đổi theo cấu hình site. Website cài SSL sau khi đã chạy nhiều năm bằng HTTP thường còn hàng trăm đường dẫn cũ nằm rải trong bảng lưu bài viết và tùy chọn hệ thống, gõ tay từng bài là không xuể.

Trước tiên vào Cài đặt, mục Chung, kiểm hai trường địa chỉ WordPress và địa chỉ trang đã chuyển sang HTTPS chưa. Sau đó dùng plugin tìm và thay thế toàn bộ trong database, hoặc chạy lệnh WP-CLI tương ứng nếu quản trị qua dòng lệnh, để đổi hết chuỗi đường dẫn cũ sang bản mã hóa cùng một lượt. Luôn sao lưu database trước khi chạy thay thế toàn bộ, vì thao tác này sửa trực tiếp trên toàn bộ bảng dữ liệu, sai một ký tự trong chuỗi tìm kiếm có thể làm hỏng nội dung bài viết.

Đặt chuyển hướng 301 sang HTTPS cho toàn bộ website

Sau khi sửa xong đường dẫn tài nguyên và database, cấu hình máy chủ chuyển hướng bắt buộc mọi truy cập chưa mã hóa sang HTTPS, để đường link cũ còn lưu ở nơi khác không kéo trang quay lại trạng thái mất ổ khóa. Rule này đặt ở file cấu hình Apache trên hosting hoặc khối server trên Nginx.

Theo tài liệu hướng dẫn di chuyển sang HTTPS của Google Search Central, HTTPS đã là tín hiệu xếp hạng từ năm 2014, và chuyển hướng bằng mã 301 là cách giữ nguyên tín hiệu đó khi đổi giao thức thay vì để công cụ tìm kiếm coi là hai địa chỉ khác nhau.

  1. Bật rule chuyển hướng bắt buộc HTTPS trong cấu hình hosting hoặc panel quản trị
  2. Dùng mã 301, không dùng 302, để xác nhận địa chỉ HTTPS là bản chính thức lâu dài
  3. Kiểm chuyển hướng không tạo vòng lặp bằng cách gõ thẳng địa chỉ cũ chưa mã hóa lên trình duyệt

Kiểm tra lại website sau khi sửa xong

Tải lại từng trang quan trọng bằng Ctrl+Shift+R để bỏ cache trình duyệt, sau đó mở lại tab Console kiểm tra không còn dòng cảnh báo Mixed Content nào. Ổ khóa quay lại bình thường ở mọi trang, không chỉ trang chủ, là dấu hiệu website đã sạch tài nguyên sai giao thức.

Kiểm thêm trang danh mục, trang sản phẩm và bài viết cũ, vì kiểu lỗi này thường nằm rải rác chứ không tập trung một chỗ. Cần đổi gói hoặc gia hạn sau này, xem trước bảng giá chứng chỉ SSL BizMaC để chọn đúng mức DV, Wildcard theo số tên miền và subdomain đang dùng. Nắm luôn khái niệm chứng chỉ SSL là gì giúp phân biệt lỗi này với các lỗi SSL khác như chứng chỉ hết hạn hay sai tên miền.

Câu hỏi thường gặp về nội dung hỗn hợp

Vì sao website có SSL rồi mà vẫn báo không an toàn?
Vì trang còn gọi ảnh, script, font hoặc iframe qua giao thức HTTP chưa mã hóa. Trình duyệt gọi đây là nội dung hỗn hợp và gỡ ổ khóa dù chứng chỉ SSL vẫn hợp lệ.

Lỗi này có tự hết khi gia hạn SSL không?
Không. Gia hạn chỉ đổi chứng chỉ, không sửa đường dẫn tài nguyên trong bài viết hay theme. Phải tìm và thay từng đường dẫn HTTP thủ công hoặc bằng công cụ thay thế toàn bộ.

Làm sao biết trang nào đang gặp lỗi này?
Mở DevTools, tab Console, tải lại trang. Mọi cảnh báo Mixed Content hiện kèm đường dẫn file cụ thể, không cần dò thủ công từng dòng mã nguồn.

Ảnh tải qua HTTP có làm sập trang không?
Không sập, ảnh vẫn hiển thị vì thuộc loại thụ động. Nhưng trình duyệt vẫn gỡ ổ khóa và ghi cảnh báo, ảnh hưởng tới cảm nhận an toàn của khách truy cập.

Sửa xong có cần cài lại SSL không?
Không cần. Chứng chỉ SSL và các đường dẫn tải sai giao thức là hai lớp khác nhau, chỉ cần sửa đường dẫn tài nguyên rồi tải lại trang để kiểm tra ổ khóa.

Mang về gì

Ổ khóa biến mất dù đã cài SSL gần như luôn vì còn sót vài đường dẫn HTTP nằm lẫn trong trang đã mã hóa, dạng ảnh, script hay iframe. Tìm bằng tab Console của trình duyệt, sửa theo đúng thứ tự từ nội dung, cấu hình, database rồi mới tới chuyển hướng 301, và luôn tải lại để kiểm tra sau mỗi bước. Làm đúng thứ tự này tránh được vòng lặp sửa xong lại phát sinh cảnh báo mới.

Lưu ý: Bài viết chia kinh nghiệm chung, còn mỗi doanh nghiệp một quy mô và một cách vận hành. Muốn biết cách nào hợp với trường hợp của bạn — chọn gói nào, làm theo thứ tự nào, chi phí ra sao — chuyên viên BizMaC tư vấn và làm giúp bạn phần kỹ thuật.

Đọc rồi mà vẫn ngại tự làm?

Để BizMaC dựng website cho doanh nghiệp bạn

Giao diện chuẩn UX, cấu trúc chuẩn SEO, chạy mượt trên di động và dễ tự quản trị sau khi bàn giao. BizMaC làm website cho doanh nghiệp Việt từ năm 2007, đi kèm hướng dẫn vận hành chứ không bàn giao xong là hết.

Khách hàng và các chỉ số lượt theo dõi, độ phủ, doanh thu của một website doanh nghiệp