Hướng Dẫn Fix Lỗi .NET Framework “A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider”

Hướng Dẫn Fix Lỗi .NET Framework

Giới thiệu về lỗi “A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider”

Lỗi này thường xảy ra khi bạn chạy ứng dụng yêu cầu chứng chỉ bảo mật nhưng chứng chỉ gốc (root certificate) không được tin cậy bởi nhà cung cấp chứng chỉ (trust provider). Lỗi phổ biến trên các hệ điều hành Windows khi ứng dụng sử dụng .NET Framework để xác thực SSL/TLS.

Lỗi này có thể khiến ứng dụng không thể kết nối đến máy chủ an toàn hoặc bị chặn bởi các chính sách bảo mật của hệ thống. Điều này đặc biệt quan trọng đối với các ứng dụng doanh nghiệp, phần mềm quản lý hệ thống, hoặc các dịch vụ cần truy xuất dữ liệu từ máy chủ an toàn.

Nguyên nhân chính gây lỗi

  • Chứng chỉ gốc không được cài đặt hoặc bị thiếu.
  • Chứng chỉ bị hết hạn hoặc không hợp lệ.
  • Windows chưa cập nhật danh sách chứng chỉ tin cậy.
  • Lỗi trong quá trình xác thực chứng chỉ trong ứng dụng .NET.
  • Cấu hình proxy hoặc firewall chặn kết nối đến máy chủ chứng chỉ.
  • Môi trường doanh nghiệp sử dụng chính sách bảo mật nghiêm ngặt.
  • Hướng Dẫn Fix Lỗi .NET Framework

Cách sửa lỗi “A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider”

Dưới đây là các phương pháp để khắc phục lỗi này một cách hiệu quả.

1. Cập nhật danh sách chứng chỉ tin cậy trên Windows

Một trong những nguyên nhân chính dẫn đến lỗi này là danh sách chứng chỉ tin cậy trên Windows chưa được cập nhật.

Cách thực hiện:

  1. Mở Command Prompt với quyền Administrator.
  2. Nhập lệnh sau để cập nhật chứng chỉ tin cậy:
    certutil -generateSSTFromWU RootCertificates.sst
  3. Mở Microsoft Management Console (MMC) bằng cách nhấn Win + R, nhập mmc, và nhấn Enter.
  4. Chọn File > Add/Remove Snap-in….
  5. Chọn Certificates và nhấn Add.
  6. Chọn Computer Account > Next > Local Computer > Finish.
  7. Nhấn OK.
  8. Mở thư mục Trusted Root Certification Authorities > Certificates.
  9. Nhập Import để thêm chứng chỉ .sst vừa tải.

Sau khi hoàn thành, khởi động lại máy tính và kiểm tra lại lỗi.

Hướng Dẫn Fix Lỗi .NET Framework

2. Cài đặt chứng chỉ theo cách thủ công

Nếu phương pháp trên không hiệu quả, bạn có thể tải và cài đặt chứng chỉ gốc theo cách thủ công.

Cách thực hiện:

  1. Truy cập Microsoft Trusted Root Certificate Program
  2. Tải chứng chỉ phù hợp với hệ điều hành của bạn.
  3. Nhấp đúp vào file chứng chỉ .crt.
  4. Chọn Install Certificate.
  5. Chọn Local Machine và nhấn Next.
  6. Chọn Place all certificates in the following store và nhấn Browse.
  7. Chọn Trusted Root Certification Authorities và nhấn OK.
  8. Nhấn Next và chọn Finish.

Sau khi hoàn tất, thử chạy lại ứng dụng để kiểm tra.

Hướng Dẫn Fix Lỗi .NET Framework

3. Sử dụng PowerShell để khắc phục lỗi

Bạn có thể sử dụng PowerShell để cài đặt chứng chỉ một cách tự động.

Cách thực hiện:

  1. Mở PowerShell với quyền Administrator.
  2. Nhập lệnh sau để tải chứng chỉ gốc:
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    Invoke-WebRequest -Uri "https://cacerts.digicert.com/DigiCertGlobalRootG2.crt" -OutFile "C:\DigiCertGlobalRootG2.crt"
  3. Cài đặt chứng chỉ vào hệ thống:
    Import-Certificate -FilePath "C:\DigiCertGlobalRootG2.crt" -CertStoreLocation Cert:\LocalMachine\Root
  4. Khởi động lại máy và kiểm tra lại ứng dụng.

4. Kiểm tra cấu hình proxy hoặc firewall

Nếu hệ thống của bạn có sử dụng proxy hoặc firewall, có thể chúng đang chặn kết nối đến các máy chủ chứng chỉ gốc.

Cách kiểm tra:

  1. Mở Internet Options trong Control Panel.
  2. Chuyển đến tab Connections và nhấp vào LAN Settings.
  3. Kiểm tra xem có proxy nào được cấu hình không. Nếu có, thử tắt nó và kiểm tra lại ứng dụng.
  4. Nếu đang sử dụng firewall, thử tạm thời vô hiệu hóa và kiểm tra lại.

5. Chạy ứng dụng với quyền Administrator

Nếu ứng dụng không có quyền đầy đủ để truy cập chứng chỉ hệ thống, bạn có thể thử chạy nó với quyền Administrator:

  1. Nhấp chuột phải vào ứng dụng .NET.
  2. Chọn Run as Administrator.
  3. Kiểm tra xem lỗi có còn xuất hiện không.

6. Bỏ qua kiểm tra chứng chỉ (Chỉ dùng trong môi trường kiểm thử)

Nếu bạn chỉ đang chạy ứng dụng trong môi trường phát triển và không muốn kiểm tra chứng chỉ, bạn có thể tắt kiểm tra SSL trong mã nguồn .NET như sau:

ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

Lưu ý: Cách này không nên sử dụng trong môi trường sản xuất vì có thể gây ra lỗ hổng bảo mật.

Kết luận

Lỗi “A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider” trong .NET Framework có thể gây ảnh hưởng lớn đến ứng dụng của bạn. Tuy nhiên, với các phương pháp trên, bạn có thể dễ dàng khắc phục lỗi này và tiếp tục sử dụng ứng dụng một cách trơn tru.

Nếu bạn gặp lỗi liên quan đến các vấn đề công nghệ khác, bạn có thể tham khảo thêm các bài viết hữu ích tại Đại Tiệc Công Nghệ: