Lỗi Microsoft IIS: Chứng chỉ không được tin cậy rộng rãi do thiếu đường dẫn chứng chỉ (Certificate Path) hợp lệ
Vấn đề
Trong một số trường hợp, máy chủ Microsoft IIS và các máy chủ TLS chạy trên nền tảng Windows cung cấp một chuỗi chứng chỉ (certificate chain) mà chỉ các thiết bị (client) đã cập nhật mới tin tưởng.
Các máy chủ này không cho phép người quản trị tự chọn hoặc chỉ định một chuỗi chứng chỉ cụ thể để gửi đi trong quá trình bắt tay TLS (TLS handshake). Thay vào đó, Windows Server sẽ tự quyết định chuỗi chứng chỉ nào được gửi dựa trên kho lưu trữ tin cậy (trust-store) của chính máy chủ đó.
Nguyên nhân
- Cơ chế tự động của Windows: Đa số kho lưu trữ tin cậy trên máy chủ đều được cập nhật bản mới nhất. Do đó, máy chủ sẽ không ưu tiên các thiết bị đời cũ (legacy clients) — ngay cả khi tổ chức phát hành chứng chỉ (CA) đã cung cấp các chứng chỉ chéo (cross-certificates) để hỗ trợ hàng triệu thiết bị cũ này.
- Sự thay đổi của CA: Các tổ chức CA công cộng hiện nay bắt buộc phải chuyển sang cấu trúc phân cấp đơn mục tiêu và thay đổi chứng chỉ gốc (Root CA) thường xuyên hơn. Việc sử dụng chứng chỉ chéo là cực kỳ quan trọng, nhưng IIS lại gây khó khăn trong việc hỗ trợ điều này.
- Lập trường của Microsoft: Mặc dù đây có thể coi là một lỗi hệ thống, Microsoft lại xem đây là một đặc tính thiết kế (by design) và cung cấp các giải pháp khắc phục tạm thời trên trang hỗ trợ (KB) của họ. https://learn.microsoft.com/en-us/troubleshoot/windows-server/certificates-and-public-key-infrastructure-pki/secured-website-certificate-validation-fails
Giải pháp khắc phục
Cách giải quyết là buộc máy chủ phải "ngừng tin tưởng" các chứng chỉ gốc mới nhất của Sectigo (như R46 và E46) để nó chuyển sang sử dụng các chứng chỉ chéo tương thích với thiết bị cũ hơn.
- Cách thủ công: Di chuyển các chứng chỉ gốc Sectigo R46 và E46 vào thư mục Disallowed (Chứng chỉ bị từ chối) trên máy chủ hoặc vô hiệu hóa chúng hoàn toàn. Microsoft thậm chí còn gợi ý tắt tính năng Tự động cập nhật Chứng chỉ gốc (Windows Automatic Root Updates).
- Cách nhanh (Sử dụng file .reg): Chúng tôi đã tạo sẵn các tệp Registry (.reg) để bạn có thể chạy trực tiếp trên máy chủ:
- IISFix-MoveSectigoSelfSignedRoots-Disallowed.reg: Di chuyển các chứng chỉ gốc vào mục Disallowed để sửa lỗi.
- IISFix-MoveSectigoSelfSignedRoots-Restore.reg: Khôi phục lại trạng thái ban đầu nếu cần.
Kết quả
Sau khi áp dụng các tệp .reg này hoặc làm theo hướng dẫn của Microsoft, máy chủ IIS sẽ bị buộc phải cung cấp một đường dẫn chứng chỉ trong quá trình TLS handshake mà tất cả các trình duyệt và thiết bị (cả cũ lẫn mới) đều chấp nhận.
Cụ thể, máy chủ sẽ sử dụng các chứng chỉ chéo từ gốc Sectigo R/E46 mới sang các gốc USERTrust RSA và ECC cũ hơn vốn đã được các thiết bị lâu đời tin tưởng.
Tệp đính kèm:
- IISFix-MoveSectigoSelfSignedRoots-Disallowed.reg (Cập nhật 03/09/2025)
- IISFix-MoveSectigoSelfSignedRoots-Restore.reg (Cập nhật 03/09/2025)
Chi tiết: https://www.sectigo.com/knowledge-base/detail/Micr...
Xử lý sự cố khác
Cần làm gì khi một Root CA hết hạn hoặc cập nhật
Yubikey: Ký mã ClickOnce bằng chứng chỉ được lưu trữ trên Yubikey
Gemalto Safenet eToken 5110CC (940): Làm thế nào để mở khóa (đặt lại mật khẩu)
Lỗi: Verify return code: 21 (unable to verify the first certificate)
Zimbra: Lỗi chdir(/root) failed: Permission denied
Signtool: Lỗi No certificates were found that met all the given criteria
Cài đặt SSL thành công nhưng Google hoặc Facebook báo lỗi
Windows: Bản vá bổ sung Trusted Root Certificates
Windows: Tự động cập nhật Chứng chỉ gốc - Trusted Root Certificates
Chrome lỗi ERR_CERT_AUTHORITY_INVALID trên Windows 7
Zimbra: Xử lý lỗi Root CA Certificate Expiration
Cpanel: Root CA Certificate Expiration
Comodo/Sectigo: Lỗi Root certificate has expired
Hướng dẫn cập nhật Root / Intermediate CA trên Linux Server
Comodo/Sectigo: Lỗi Root certificate has expired
Lỗi: Windows does not have enough information to verify this certificate
Windows Server 2012: Hướng dẫn cập nhật máy chủ hỗ trợ TLS 1.2
Windows Server 2008: Hướng dẫn cập nhật máy chủ hỗ trợ TLS 1.2
Exchange Server: Khắc phục lỗi didnt found starttls in server response, try anyway khi kết nối STARTTLS
VestaCP/Sectigo: SSL intermediate chain is not valid