Bạn vừa cài xong chứng chỉ SSL — nhà phát triển xác nhận đã xong, server đã restart — nhưng trình duyệt vẫn hiển thị cảnh báo đỏ với dòng "Your connection is not private". Rõ ràng có gì đó không khớp, nhưng khớp cái gì?
Lỗi "cert không khớp" thực ra là tên chung cho nhiều sự cố khác nhau: cert đúng nhưng ghép sai private key, cert hợp lệ nhưng thiếu file chain trung gian, hoặc cert cài đúng nhưng tên miền trong cert không bao gồm địa chỉ bạn đang truy cập. Mỗi trường hợp có nguyên nhân khác nhau và cách sửa khác nhau — bài viết này sẽ giúp bạn chẩn đoán đúng từng trường hợp.
Kiểm tra nhanh: nhập tên miền vào công cụ kiểm tra SSL — chi tiết về chain, CN/SAN và giao thức sẽ cho thấy ngay vấn đề nằm ở đâu.
Vì sao cert đã cài vẫn báo "không khớp"?
Có ba nhóm nguyên nhân chính, dễ nhầm lẫn với nhau nhưng cách sửa hoàn toàn khác:
NhómMô tảDấu hiệu điển hìnhCert không khớp private keyCert được upload nhưng không phải private key tương ứngServer báo lỗi khi khởi động: SSL_CTX_use_PrivateKey_file failed hoặc tương tựThiếu intermediate chainChỉ cài cert leaf, không kèm file chain trung gian của CAHoạt động trên Chrome máy tính (có cache) nhưng lỗi trên Android cũ, iOS hoặc curlSai CN/SANCert cấp cho www.example.vn nhưng truy cập example.vn, hoặc ngược lạiLỗi "hostname does not match" hoặc "Subject Alternative Name missing"
Nắm được ba nhóm này, bạn đọc thông báo lỗi là biết ngay mình đang gặp nhóm nào.
4 bước chẩn đoán và khắc phục
Bước 1 — Lấy cái nhìn tổng quan về tình trạng SSL
Trước khi đi sâu vào từng nguyên nhân, hãy chạy kiểm tra tổng thể: chain có đủ không, TLS version là bao nhiêu, SAN gồm những tên miền nào, cert do CA nào cấp.
👉 Kiểm tra SSL: công cụ kiểm tra SSL (chain, SAN, TLS, ngày hết hạn, giao thức).
Kết quả cần để ý:
Chain: đủ từ cert leaf → intermediate → root CA chưa, hay đang bị đứt ở đâu.
SAN list:
www.example.vncó trong danh sách không?example.vngốc có không?TLS handshake: có thành công không, hay thất bại hoàn toàn — thường là dấu hiệu cert không khớp key.
Lỗi hay gặp:
Kiểm tra từ chính máy cài cert — server có thể cache cert cũ hoặc dùng cấu hình khác cho kết nối local. Kiểm tra từ máy bên ngoài cho kết quả chính xác hơn.
Chỉ kiểm tra một URL — nếu cert là wildcard, thử vài subdomain khác nhau để chắc wildcard hoạt động đúng.
Bước 2 — Xác nhận cert và private key khớp nhau
Đây là bước loại trừ nguyên nhân nghiêm trọng nhất: cert và private key phải là "cặp đôi" sinh ra cùng lúc từ cùng một CSR. Nếu không khớp, mọi cài đặt khác đều vô nghĩa.
👉 Kiểm tra khớp cert–key: công cụ kiểm tra cert khớp key (dán cert và key, công cụ so khớp modulus).
Cách dùng: dán nội dung file .crt và file .key vào, công cụ kiểm tra modulus — nếu khớp thì cert và key là đúng cặp; nếu không khớp thì đang dùng sai private key.
Lỗi hay gặp:
Nhầm file CSR với cert: CSR (Certificate Signing Request) là yêu cầu để xin cert, không phải cert thật. Cert thật từ CA là file cần cài lên server.
Dùng private key từ lần cấp cert trước: mỗi lần tạo CSR mới sẽ tạo ra private key mới. Cert mới chỉ khớp với private key được tạo cùng lúc với CSR gửi lên CA lần đó.
Bước 3 — Giải mã cert để đọc chi tiết SAN và chain
Sau khi xác nhận cert–key khớp, bước tiếp theo là đọc nội dung cert để kiểm tra chính xác những tên miền nào được bao gồm và chain có đủ không.
👉 Giải mã cert: công cụ giải mã SSL (đọc cert từ URL hoặc dán PEM, xem SAN, issuer, validity, chain).
Những điểm cần đọc kỹ:
Subject Alternative Names (SAN): liệt kê đầy đủ các tên miền cert bao gồm. Nếu truy cập
api.tencongty.vnnhưng SAN chỉ cótencongty.vnvàwww.tencongty.vn— đây là nguyên nhân lỗi mismatch.Issuer và Intermediate: cert leaf được ký bởi intermediate CA nào? Bạn có file intermediate đó không? Chain cần ghép đúng thứ tự: cert leaf → intermediate → root.
Validity (Not Before): cert đôi khi được cấp trước nhưng chỉ có hiệu lực từ một ngày cụ thể sau đó — nếu cài trước ngày đó, trình duyệt vẫn từ chối.
Bước 4 — Đối chiếu với CSR ban đầu
Nếu cert đúng nhưng SAN không bao gồm tất cả tên miền bạn cần, bước này giúp xác nhận lỗi nằm ở khâu tạo CSR từ đầu — để biết cần làm lại CSR hay chỉ cần xin thêm SAN.
👉 Giải mã CSR: công cụ giải mã CSR (dán nội dung CSR, xem CN và SAN đã khai báo khi xin cert).
Ví dụ: CSR cho thấy chỉ khai báo www.tencongty.vn nhưng không có tencongty.vn gốc — đây là lý do cert được cấp thiếu domain gốc. Cần tạo lại CSR với đủ SAN rồi xin CA cấp cert mới.
Lỗi hay gặp:
Wildcard cert
*.tencongty.vnkhông bao gồmtencongty.vn: wildcard*chỉ bao phủ một cấp subdomain, không bao gồm domain gốc. Cần thêm SANtencongty.vnriêng, hoặc dùng cert có cả wildcard lẫn domain gốc.Tạo CSR trên máy hosting A nhưng cài cert lên server B: private key nằm trên máy A, không thể dùng trên máy B. Tạo CSR ngay trên server sẽ cài cert thì mới không bị lẫn key.
Sau khi sửa — bao lâu có hiệu lực?
Sửa cặp cert–key: sau khi cài cert đúng và restart web server → hiệu lực ngay lập tức.
Bổ sung intermediate chain: một số server cần restart để nhận file chain mới → hiệu lực ngay sau restart.
Đổi cert mới (thêm SAN): CA thường cấp cert mới trong vài phút đến vài giờ (DV) hoặc vài ngày (OV). Sau khi cài cert mới và restart → hiệu lực ngay.
Vẫn thấy lỗi sau khi sửa? Thử
curl -Iv https://tencongty.vn 2>&1 | grep -E "SSL|TLS|cert"từ terminal bên ngoài để xem server đang gửi cert nào — bỏ qua hoàn toàn cache trình duyệt.
Câu hỏi thường gặp (FAQ)
Cert mới mua nhưng cài xong vẫn báo lỗi — làm sao biết cert hay key sai? Đọc log web server khi restart — nếu có dòng lỗi liên quan đến key hoặc SSL handshake ngay khi khởi động, đó là dấu hiệu cert và key không khớp. Xác nhận bằng công cụ kiểm tra cert khớp key là nhanh nhất.
Wildcard SSL *.example.vn có bao gồm example.vn không? Không. *.example.vn chỉ bao phủ một cấp: www.example.vn, shop.example.vn, v.v. Để example.vn gốc cũng được bảo vệ, cert cần có thêm SAN cho example.vn — nhiều nhà cấp phát cho phép gộp cả wildcard lẫn domain gốc vào cùng một cert.
Intermediate chain là gì và tìm file đó ở đâu? Intermediate chain là chứng chỉ trung gian nối cert của bạn với root CA mà trình duyệt tin tưởng. Nhà cấp phát (DigiCert, Comodo, Sectigo…) cung cấp file này cùng cert của bạn trong email xác nhận hoặc dashboard quản lý — thường tên file chứa "bundle", "chain" hoặc "ca-cert".
Không có file CSR gốc — có làm lại được không? Hoàn toàn được. CSR chỉ cần khi đặt hàng cert mới. Bạn tạo lại bằng lệnh:
openssl req -new -newkey rsa:2048 -nodes -keyout tencongty.key -out tencongty.csrHoặc qua control panel của hosting. Sau đó dùng CSR mới để xin CA cấp cert mới là xong.
BKNS Tools — bộ công cụ chẩn đoán SSL miễn phí. Kiểm tra SSL · Kiểm tra cert khớp key · Giải mã cert · Giải mã CSR — không cần đăng nhập.




