Tất cả phiên bản Windows có tính năng tích hợp tự động cập nhật chứng chỉ gốc từ trang web Microsoft. MSFT, như một phần của Chương trình Chứng chỉ Gốc Tin cậy Microsoft, duy trì và công bố danh sách chứng chỉ tin cậy cho client và thiết bị Windows trong kho trực tuyến. Nếu chứng chỉ đã xác thực trong chuỗi chứng chỉ tham chiếu đến CA gốc tham gia chương trình này, hệ thống sẽ tự động tải chứng chỉ gốc này từ server Windows Update và thêm vào danh sách tin cậy.
Windows cập nhật danh sách chứng chỉ gốc tin cậy (CTL) một lần mỗi tuần. Nếu Windows không có truy cập trực tiếp đến Windows Update, hệ thống không thể cập nhật chứng chỉ gốc. Do đó người dùng có thể gặp sự cố khi duyệt web (chứng chỉ SSL được ký bởi CA không tin cậy – xem bài về lỗi "Chrome SSL error: This site can't provide a secure connection"), hoặc cài đặt/chạy script và ứng dụng đã ký.
Trong bài này, chúng ta sẽ tìm hiểu cách cập nhật thủ công danh sách chứng chỉ gốc trong TrustedRootCA trên mạng cách ly (isolated) hoặc máy tính/server không có truy cập Internet trực tiếp.
Mục lục
- Quản lý chứng chỉ gốc tin cậy trong Windows 10 và 11
- Bật/tắt tự động cập nhật chứng chỉ gốc trong Windows
- Certutil: Tải chứng chỉ gốc tin cậy từ Windows Update
- Danh sách Tin cậy Chứng chỉ (STL) trong Windows
- Cập nhật chứng chỉ gốc tin cậy qua GPO trong môi trường cách ly
- Cách cập nhật chứng chỉ gốc tin cậy trong Windows 7
- Cập nhật chứng chỉ gốc trên Windows XP dùng công cụ Rootsupd.exe
Quản lý chứng chỉ gốc tin cậy trong Windows 10 và 11
Cách xem danh sách chứng chỉ gốc tin cậy trên máy Windows?
- Chạy console mmc.exe;
- Chọn File → Add/Remove Snap-in, chọn Certificates (certmgr) trong danh sách snap-in → Add;
- Chọn quản lý chứng chỉ của Computer account local;
- Next → OK → OK;
- Mở rộng node Certificates → Trusted Root Certification Authorities Store. Phần này chứa danh sách chứng chỉ gốc tin cậy trên máy.
Trong console mmc, có thể xem thông tin bất kỳ chứng chỉ nào hoặc xóa khỏi tin cậy.
Cũng có thể lấy danh sách chứng chỉ gốc tin cậy kèm ngày hết hạn bằng PowerShell:
Get-Childitem cert:\LocalMachine\root | format-list
Liệt kê chứng chỉ đã hết hạn hoặc sắp hết hạn trong 60 ngày tới:
Get-ChildItem cert:\LocalMachine\root | Where {$_.NotAfter -lt (Get-Date).AddDays(60)} | select NotAfter, Subject
Vì lý do bảo mật, khuyến nghị định kỳ kiểm tra kho chứng chỉ tin cậy trên máy để tìm chứng chỉ đáng ngờ và bị thu hồi dùng công cụ Sigcheck. Công cụ này cho phép so sánh danh sách chứng chỉ cài trên máy với danh sách chứng chỉ gốc trên trang web Microsoft (có thể tải file offline authrootstl.cab chứa chứng chỉ cập nhật).
Có thể chuyển file chứng chỉ gốc giữa máy Windows thủ công qua Export/Import:
- Xuất bất kỳ chứng chỉ nào ra file .CER: chuột phải chọn All Tasks → Export;
- Nhập chứng chỉ này trên máy khác: All Tasks → Import.
Bật/tắt tự động cập nhật chứng chỉ gốc trong Windows
Như đã nói, Windows tự động cập nhật chứng chỉ gốc. Có thể bật/tắt gia hạn chứng chỉ qua GPO hoặc registry.
Mở Local Group Policy Editor (gpedit.msc) → Computer Configuration → Administrative Templates → System → Internet Communication Management → Internet Communication.
Tùy chọn Turn off Automatic Root Certificates Update cho phép tắt tự động cập nhật chứng chỉ gốc qua trang Windows Update. Mặc định policy không cấu hình và Windows luôn thử tự động gia hạn chứng chỉ gốc.
Nếu tùy chọn GPO không cấu hình nhưng chứng chỉ gốc không tự gia hạn, kiểm tra xem cài đặt có được bật thủ công trong registry không. Kiểm tra giá trị tham số registry bằng PowerShell:
Get-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\SystemCertificates\AuthRoot' -Name DisableRootAutoUpdate
Nếu lệnh trả về giá trị tham số DisableRootAutoUpdate là 1, nghĩa là cập nhật chứng chỉ gốc bị tắt. Để bật, đổi giá trị thành 0.
Certutil: Tải chứng chỉ gốc tin cậy từ Windows Update
Certutil.exe là công cụ CLI quản lý chứng chỉ (có từ Windows 10, Windows 7 có qua bản cập nhật riêng). Dùng để tải danh sách chứng chỉ gốc cập nhật từ Windows Update và lưu vào file SST.
Để tạo file SST trên máy chạy Windows 10/11 có truy cập Internet trực tiếp, mở command prompt quyền admin và chạy:
certutil.exe -generateSSTFromWU C:\PS\roots.sst
Kết quả: Updated SST file. CertUtil: -generateSSTFromWU command completed successfully.
File SST chứa danh sách chứng chỉ gốc cập nhật sẽ xuất hiện trong thư mục đích. Double-click để mở. File này là container chứa chứng chỉ gốc tin cậy.
Có thể dùng script PowerShell cài tất cả chứng chỉ từ file SST và thêm vào danh sách chứng chỉ gốc tin cậy:
$sstStore = (Get-ChildItem -Path C:\ps\rootsupd\roots.sst)
$sstStore | Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root
Chạy snap-in certmgr.msc và xác minh tất cả chứng chỉ đã thêm vào Trusted Root Certification Authority. Trong ví dụ trên Windows 11, số lượng chứng chỉ gốc tăng từ 34 lên 438.
certutil -syncWithWU có thể tạo file chứng chỉ riêng lẻ. Các chứng chỉ thu được cách này có thể triển khai đến thiết bị Windows qua GPO.
Bản Windows cài sạch sau cài đặt chỉ chứa số lượng nhỏ chứng chỉ trong kho gốc. Nếu máy có Internet, các chứng chỉ gốc còn lại sẽ cài tự động (theo yêu cầu) khi thiết bị truy cập trang HTTPS hoặc chứng chỉ SSL có vân tay từ Microsoft CTL trong chuỗi tin cậy. Do đó, thường không cần thêm ngay tất cả chứng chỉ Microsoft tin cậy vào kho chứng chỉ local.
Danh sách Tin cậy Chứng chỉ (STL) trong Windows
Certificate Trust List (CTL) đơn giản là danh sách dữ liệu (như hash chứng chỉ) được ký bởi bên tin cậy (Microsoft trong trường hợp này). Windows client định kỳ tải CTL này từ Windows Update, CTL lưu hash của tất cả CA gốc tin cậy. Cần hiểu CTL không chứa chứng chỉ bản thân, chỉ chứa hash và thuộc tính (ví dụ Friendly Name). Thiết bị Windows có thể tải chứng chỉ tin cậy từ CTL theo yêu cầu.
Có thể tải thủ công và cài file CTL. Tải file https://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab (cập nhật 2 lần/tháng). Giải nén file authrootstl.cab bằng bất kỳ công cụ nén nào (hoặc cả File Explorer). Chứa duy nhất file authroot.stl.
File Authroot.stl là container chứa danh sách thumbprint chứng chỉ tin cậy ở định dạng Certificate Trust List.
Cài file CTL này vào Trusted Root Certification Authority bằng lệnh certutil:
certutil -enterprise -f -v -AddStore "Root" "C:\PS\authroot.stl"
Kết quả: root "Trusted Root Certification Authorities" CTL 0 added to store. CertUtil: -addstore command completed successfully.
Cũng có thể nhập chứng chỉ qua console quản lý chứng chỉ (Trust Root Certification Authorities → Certificates → All Tasks → Import). Chỉ định đường dẫn file STL chứa thumbprint chứng chỉ.
Sau khi chạy lệnh, section mới Certificate Trust List xuất hiện trong container Trusted Root Certification Authorities của Certificate Manager (certmgr.msc).
Tương tự, có thể tải và cài danh sách chứng chỉ bị thu hồi (disallowed) đã loại khỏi Root Certificate Program. Tải file disallowedcertstl.cab (https://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/disallowedcertstl.cab), giải nén, thêm vào kho Untrusted Certificates:
certutil -enterprise -f -v -AddStore disallowed "C:\PS\disallowedcert.stl"
Cập nhật chứng chỉ gốc tin cậy qua GPO trong môi trường cách ly
Nếu nhiệm vụ cập nhật định kỳ chứng chỉ gốc trong domain AD cách ly Internet, có phương án phức tạp hơn một chút để cập nhật kho chứng chỉ local trên máy tham gia domain dùng Group Policy. Có thể cấu hình cập nhật chứng chỉ gốc trên máy user trong mạng Windows cách ly theo vài cách.
Cách 1: Định kỳ tải thủ công và copy file chứng chỉ gốc vào mạng cách ly. Tải file chứng chỉ gốc Microsoft hiện tại:
certutil.exe –generateSSTFromWU roots.sst
Triển khai chứng chỉ gốc từ file này qua SCCM hoặc PowerShell Startup script trong GPO:
$sstStore = (Get-ChildItem -Path \\fr-dc01\SYSVOL\woshub.com\rootcert\roots.sst)
$sstStore | Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root
Cách 2: Tải chứng chỉ gốc Microsoft thực tế dùng lệnh:
Certutil -syncWithWU -f \\fr-dc01\SYSVOL\woshub.com\rootcert\
Số file chứng chỉ gốc (định dạng CRT) sẽ xuất hiện trong thư mục chia sẻ mạng (kể cả file authrootstl.cab, disallowedcertstl.cab, disallowedcert.sst, thumbprint.crt).
Sau đó dùng Group Policy Preferences thay đổi giá trị tham số registry RootDirURL dưới HKLM\Software\Microsoft\SystemCertificates\AuthRoot\AutoUpdate. Tham số này phải trỏ đến thư mục chia sẻ mạng từ đó máy Windows client nhận chứng chỉ gốc mới. Chạy console domain GPMC.msc, tạo GPO mới, chuyển chế độ edit policy, mở rộng Computer Configuration → Preferences → Windows Settings → Registry. Tạo registry property mới với cài đặt:
- Action: Update
- Hive: HKLM
- Key path: Software\Microsoft\SystemCertificates\AuthRoot\AutoUpdate
- Value name: RootDirURL
- Type: REG_SZ
- Value data: file://\\fr-dc01\SYSVOL\woshub.com\rootcert\
Còn lại là link policy này vào OU máy tính và sau khi cập nhật GPO trên client, kiểm tra chứng chỉ gốc mới trong certstore.
Cách cập nhật chứng chỉ gốc tin cậy trong Windows 7
Dù Windows 7 đã End of Support, nhiều user và công ty vẫn dùng.
Sau cài Windows 7 sạch, có thể thấy nhiều chương trình/công cụ hiện đại không hoạt động vì được ký bằng chứng chỉ mới. Đặc biệt, có phàn nàn .Net Framework 4.8 hoặc Microsoft Visual Studio (vs_Community.exe) không cài được trên Windows 7 SP1 x64 nếu không cập nhật chứng chỉ gốc.
The installer manifest failed signature validation. NET Framework has not been installed because a certificate chain could not be built to a trusted root authority.
Để cập nhật chứng chỉ gốc trong Windows 7, trước hết phải tải và cài bản cập nhật MSU KB2813430 (https://support.microsoft.com/en-us/topic/an-update-is-available-that-enables-administrators-to-update-trusted-and-disallowed-ctls-in-disconnected-environments-in-windows-0c51c702-fdcc-f6be-7089-4585fad729d6).
Sau đó dùng certutil tạo file SST chứa chứng chỉ gốc (trên máy hiện tại hoặc máy khác):
certutil.exe -generateSSTFromWU c:\ps\roots.sst
Bây giờ nhập chứng chỉ vào tin cậy:
Chạy MMC → add snap-in → certificates → computer account → local computer. Chuột phải Trusted root certification authority, All Tasks → Import, tìm file SST (loại file chọn Microsoft Serialized Certificate Store — *.sst) → Open → Place all certificates in the following store → Trusted Root Certification Authorities.
Cập nhật chứng chỉ gốc trên Windows XP dùng công cụ Rootsupd.exe
Trong Windows XP, tiện ích rootsupd.exe dùng để cập nhật chứng chỉ gốc máy tính. Danh sách chứng chỉ gốc và bị thu hồi trong đó được cập nhật định kỳ. Công cụ phân phối như bản cập nhật riêng KB931125 (Update for Root Certificates). Xem có thể dùng сейчас không.
- Tải rootsupd.exe qua link
https://download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/rootsupd.exe. Hiện tại (tháng 1/2021) link không hoạt động, Microsoft đã gỡ bỏ. Hiện có thể tải rootsupd.exe từ trang Kaspersky — https://media.kaspersky.com/utilities/CorporateUtilities/rootsupd.zip; - Để cài chứng chỉ gốc Windows, chỉ cần chạy rootsupd.exe. Nhưng chúng ta sẽ kiểm tra nội dung kỹ hơn. Giải nén chứng chỉ từ file thực thi:
rootsupd.exe /c /t: C:\PS\rootsupd - Chứng chỉ lưu trong file SST như authroots.sst, delroot.sst, v.v. Để xóa hoặc cài chứng chỉ, dùng lệnh:
updroots.exe authroots.sst
updroots.exe -d delroots.sst
Nhưng có thể dùng cerutil trong Windows 10/11 tải root.sst, copy sang Windows XP và cài chứng chỉ bằng updroots.exe:
updroots.exe c:\temp\roots.sst
Có thông tin cho rằng updroots.exe không khuyến khích dùng trên Windows 10 1803+ và Windows 11 hiện đại, vì có thể làm hỏng Microsoft root CA trên thiết bị.
Trong bài này, chúng ta đã xem xétいくつか cách cập nhật chứng chỉ gốc tin cậy trên máy tính mạng Windows cách ly Internet (môi trường disconnected).