Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows 7

การอัปเดตรายการ Trusted Root Certificates ใน Windows

Windows ทุกเวอร์ชันมีฟีเจอร์ในตัวสำหรับอัปเดต Root Certificates จากเว็บไซต์ของ Microsoft อัตโนมัติ Microsoft ผ่าน Microsoft Trusted Root Certificate Program ดูแลและเผยแพร่รายการใบรับรองที่ไว้วางใจสำหรับไคลเอนต์และอุปกรณ์ Windows ในที่เก็บข้อมูลออนไลน์ หากใบรับรองที่ผ่านการตรวจสอบในเชนการรับรองอ้างอิงถึง Root CA ที่เข้าร่วมโปรแกรมนี้ ระบบจะดาวน์โหลด Root Certificate นี้จากเซิร์ฟเวอร์ Windows Update และเพิ่มเข้าไปในรายการที่ไว้วางใจโดยอัตโนมัติ

Windows อัปเดตรายการ Trusted Root Certificates (CTL) หนึ่งครั้งต่อสัปดาห์ หาก Windows ไม่มีการเข้าถึง Windows Update โดยตรง ระบบจะไม่สามารถอัปเดต Root Certificates ได้ ดังนั้นผู้ใช้อาจมีปัญหาเมื่อเข้าเว็บไซต์ (ซึ่ง SSL certificates ถูกเซ็นโดย CA ที่ไมไว้วางใจ – ดูบทความเกี่ยวกับ “Chrome SSL error: This site can’t provide a secure connection”) หรือกับการติดตั้ง/รันสคริปต์และแอปที่เซ็นแล้ว

ในบทความนี้ เราจะพยายามหาวิธีอัปเดตรายการ Root Certificates ใน TrustedRootCA บนเครือข่ายที่แยกต่างหาก (isolated) หรือคอมพิวเตอร์/เซิร์ฟเวอร์ที่ไม่มีการเข้าถึงอินเทอร์เน็ตโดยตรง

สารบัญ

  • การจัดการ Trusted Root Certificates ใน Windows 10 และ 11
  • วิธีปิด/เปิดการอัปเดต Root Certificates อัตโนมัติใน Windows
  • Certutil: ดาวน์โหลด Trusted Root Certificates จาก Windows Update
  • Certificate Trust List (STL) ใน Windows
  • อัปเดต Trusted Root Certificates ผ่าน GPO ในสภาพแวดล้อมที่แยกต่างหาก
  • วิธีอัปเดต Trusted Root Certificates ใน Windows 7
  • อัปเดต Root Certificates บน Windows XP ด้วยเครื่องมือ Rootsupd.exe

หมายเหตุ หากคอมพิวเตอร์เข้าถึงอินเทอร์เน็ตผ่าน Proxy server Microsoft แนะนำให้เปิดการเข้าถึงโดยตรง (bypass) ไปยังเว็บไซต์ของ Microsoft เพื่อต่ออายุ Root Certificates อัตโนมัติ อย่างไรก็ตาม ไม่ได้เป็นไปได้เสมอไปหรือเหมาะสมเนื่องจากข้อจำกัดขององค์กร

การจัดการ Trusted Root Certificates ใน Windows 10 และ 11

วิธีดูรายการ Trusted Root Certificates บนคอมพิวเตอร์ Windows:

  1. เปิดคอนโซล mmc.exe;
  2. เลือก File → Add/Remove Snap-in เลือก Certificates (certmgr) ในรายการ snap-ins → Add;
  3. เลือกจัดการใบรับรองของ Computer account ท้องถิ่น;
    การอัปเดตรายการ Trusted Root Certificates ใน Windows
  4. Next → OK → OK;
  5. ขยายโหนด Certificates → Trusted Root Certification Authorities Store ส่วนนี้มีรายการ Trusted Root Certificates บนคอมพิวเตอร์ของคุณ

ในคอนโซล mmc คุณสามารถดูข้อมูลใบรับรองใดๆ หรือลบออกจากรายการที่ไว้วางใจได้

ยังสามารถดูรายการ Trusted Root Certificates พร้อมวันหมดอายุด้วย PowerShell:

Get-Childitem cert:\LocalMachine\root | format-list

แสดงรายการใบรับรองที่หมดอายุแล้ว หรือหมดอายุใน 60 วันข้างหน้า:

Get-ChildItem cert:\LocalMachine\root | Where {$_.NotAfter -lt (Get-Date).AddDays(60)} | select NotAfter, Subject

การอัปเดตรายการ Trusted Root Certificates ใน Windows

เพื่อเหตุผลด้านความปลอดภัย ขอแนะนำให้ตรวจสอบ Certificate Trust Store บนคอมพิวเตอร์เป็นระยะสำหรับใบรับรองที่น่าสงสัยและถูกเพิกถอน โดยใช้เครื่องมือ Sigcheck เครื่องมือนี้ช่วยเปรียบเทียบรายการใบรับรองที่ติดตั้งบนคอมพิวเตอร์กับรายการ Root Certificates บนเว็บไซต์ Microsoft (สามารถดาวน์โหลดไฟล์ออฟไลน์ที่มีใบรับรองล่าสุด authrootstl.cab)

สามารถโอนย้ายไฟล์ Root Certificate ระหว่างคอมพิวเตอร์ Windows ด้วยตัวเลือก Export/Import ได้ด้วยตนเอง

  1. ส่งออกใบรับรองใดๆ เป็นไฟล์ .CER โดยคลิกที่ใบรับรองแล้วเลือก All Tasks → Export;
    การอัปเดตรายการ Trusted Root Certificates ใน Windows
  2. นำเข้าใบรับรองนี้บนคอมพิวเตอร์อื่นด้วยตัวเลือก All Tasks → Import
    การอัปเดตรายการ Trusted Root Certificates ใน Windows

วิธีปิด/เปิดการอัปเดต Root Certificates อัตโนมัติใน Windows

ตามที่กล่าวมา Windows อัปเดต Root Certificates อัตโนมัติ สามารถเปิดหรือปิดการต่ออายุใบรับรองใน Windows ผ่าน GPO หรือ Registry

เปิด Local Group Policy Editor (gpedit.msc) ไปที่ Computer Configuration → Administrative Templates → System → Internet Communication Management → Internet Communication

ตัวเลือก Turn off Automatic Root Certificates Update ในส่วนนี้ช่วยปิดการอัปเดต Root Certificates อัตโนมัติผ่านเว็บไซต์ Windows Update โดยค่าเริ่มต้น Policy นี้ไม่ได้ถูกกำหนดค่า และ Windows จะพยายามต่ออายุ Root Certificates อัตโนมัติเสมอ

การอัปเดตรายการ Trusted Root Certificates ใน Windows

หากตัวเลือก GPO นี้ไม่ได้กำหนดค่า และ Root Certificates ไม่ได้อัปเดตอัตโนมัติ ให้ตรวจสอบว่าการตั้งค่านี้ถูกเปิดใช้งานด้วยตนเองใน Registry หรือไม่ ตรวจสอบค่าพารามิเตอร์รีจิสทรีด้วย PowerShell:

Get-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\SystemCertificates\AuthRoot' -Name DisableRootAutoUpdate

การอัปเดตรายการ Trusted Root Certificates ใน Windows

หากคำสั่งคืนค่าว่าพารามิเตอร์รีจิสทรี DisableRootAutoUpdate เป็น 1 แสดงว่าการอัปเดต Root Certificates ถูกปิดใช้งานบนคอมพิวเตอร์ของคุณ เพื่อเปิดใช้งาน ให้เปลี่ยนค่าพารามิเตอร์เป็น 0

Certutil: ดาวน์โหลด Trusted Root Certificates จาก Windows Update

Certutil.exe เครื่องมือ CLI สำหรับจัดการใบรับรอง (นำเข้ามาใน Windows 10, สำหรับ Windows 7 พร้อมอัปเดตแยก) สามารถใช้ดาวน์โหลดรายการ Root Certificates ล่าสุดจาก Windows Update และบันทึกเป็นไฟล์ SST

เพื่อสร้างไฟล์ SST บนคอมพิวเตอร์ที่รัน Windows 10 หรือ 11 และมีการเข้าถึงอินเทอร์เน็ตโดยตรง ให้เปิด Command Prompt ด้วยสิทธิ์สูงและรันคำสั่ง:

certutil.exe -generateSSTFromWU C:\PS\roots.sst

Updated SST file. CertUtil: -generateSSTFromWU command completed successfully.

การอัปเดตรายการ Trusted Root Certificates ใน Windows

ผลลัพธ์คือไฟล์ SST ที่มีรายการ Root Certificates ล่าสุดจะปรากฏในไดเรกทอรีปลายทาง ดับเบิลคลิกเพื่อเปิด ไฟล์นี้เป็น Container ที่มี Trusted Root Certificates

การอัปเดตรายการ Trusted Root Certificates ใน Windows

เห็นได้ว่า Snap-in การจัดการใบรับรองที่คุ้นเคยเปิดขึ้น จากนั้นสามารถส่งออกใบรับรองใดๆ ที่ได้รับมา ในกรณีของผมมี 358 รายการในรายการใบรับรอง ชัดเจนว่าการส่งออกและติดตั้งทีละใบไม่สมเหตุสมผล

เคล็ดลับ คำสั่ง certutil -syncWithWU ใช้สร้างไฟล์ใบรับรองแต่ละไฟล์ ใบรับรองที่ได้แบบนี้สามารถปรับใช้ไปยังอุปกรณ์ Windows ผ่าน GPO

สามารถใช้สคริปต์ PowerShell เพื่อติดตั้งใบรับรองทั้งหมดจากไฟล์ SST และเพิ่มเข้าไปในรายการ Trusted Root Certificates บนคอมพิวเตอร์:

$sstStore = ( Get-ChildItem -Path C:\ps\rootsupd\roots.sst )
$sstStore | Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root

รัน snap-in certmgr.msc และตรวจสอบว่าใบรับรองทั้งหมดถูกเพิ่มเข้า Trusted Root Certification Authority แล้ว ในตัวอย่างของผมบน Windows 11 จำนวน Root Certificates เพิ่มขึ้นจาก 34 เป็น 438

การอัปเดตรายการ Trusted Root Certificates ใน Windows

Windows ติดตั้งใหม่มีเพียงจำนวนน้อยของใบรับรองใน Root Store หากคอมพิวเตอร์เชื่อมต่ออินเทอร์เน็ต ใบรับรอง Root ที่เหลือจะติดตั้งอัตโนมัติ (เมื่อต้องการ) หากอุปกรณ์ของคุณเข้าถึงเว็บไซต์ HTTPS หรือ SSL Certificate ที่มี Fingerprint จาก Microsoft CTL ในเชนความไว้วางใจ ดังนั้นโดยทั่วไป ไม่จำเป็นต้องเพิ่มใบรับรองทั้งหมดที่ Microsoft ไว้วางใจเข้า Local Certification Store ทันที

Certificate Trust List (STL) ใน Windows

Certificate Trust List (CTL) คือเพียงรายการข้อมูล (เช่น Certificate hashes) ที่เซ็นโดยฝ่ายที่ไว้วางใจ (ในที่นี้คือ Microsoft) Windows Client จะดาวน์โหลด CTL นี้จาก Windows Update เป็นระยะ ซึ่งเก็บ Hashes ของ Trusted Root CAs ทั้งหมด ควรเข้าใจว่า CTL นี้ไม่ได้มีใบรับรองตัวเอง แค่ Hashes และ Attributes (เช่น Friendly Name) เท่านั้น อุปกรณ์ Windows สามารถดาวน์โหลด Trusted Certificate จาก Certificate Trust List ตามความต้องการได้

สามารถดาวน์โหลดและติดตั้งไฟล์ CTL เองได้ ดาวน์โหลดไฟล์ https://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab (อัปเดตสองครั้งต่อเดือน) ใช้โปรแกรมบีบอัด (หรือ Windows Explorer) แตกไฟล์ authrootstl.cab จะได้ไฟล์ authroot.stl เดียว

การอัปเดตรายการ Trusted Root Certificates ใน Windows

ไฟล์ Authroot.stl เป็น Container พร้อมรายการ Thumbprints ของใบรับรองที่ไว้วางใจในรูปแบบ Certificate Trust List

การอัปเดตรายการ Trusted Root Certificates ใน Windows

สามารถติดตั้งไฟล์ CTL นี้เข้า Trusted Root Certificate Authority ด้วยคำสั่ง certutil:

certutil -enterprise -f -v -AddStore "Root" "C:\PS\authroot.stl"

การอัปเดตรายการ Trusted Root Certificates ใน Windows

root "Trusted Root Certification Authorities" CTL 0 added to store. CertUtil: -addstore command completed successfully.

ยังสามารถนำเข้าใบรับรองผ่านคอนโซลจัดการใบรับรอง (Trust Root Certification Authorities → Certificates → All Tasks → Import) ระบุพาธไปยังไฟล์ STL ที่มี Thumbprints ของใบรับรอง

การอัปเดตรายการ Trusted Root Certificates ใน Windows

หลังรันคำสั่ง ส่วน Certificate Trust List ใหม่จะปรากฏใน Container Trusted Root Certification Authorities ของคอนโซล Certificate Manager (certmgr.msc)

การอัปเดตรายการ Trusted Root Certificates ใน Windows

ด้วยวิธีเดียวกัน สามารถดาวน์โหลดและติดตั้งรายการใบรับรองที่ถูกเพิกถอน (disallowed) ที่ถูกลบออกจาก Root Certificate Program ได้ ดาวน์โหลดไฟล์ disallowedcertstl.cab (https://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/disallowedcertstl.cab) แตกไฟล์ และเพิ่มเข้า Untrusted Certificates store ด้วยคำสั่ง:

certutil -enterprise -f -v -AddStore disallowed "C:\PS\disallowedcert.stl"

อัปเดต Trusted Root Certificates ผ่าน GPO ในสภาพแวดล้อมที่แยกต่างหาก

หากคุณมีภารกิจอัปเดต Root Certificates เป็นประจำในโดเมน Active Directory ที่แยกจากอินเทอร์เน็ต มีแผนการอัปเดต Local Certificate Stores บนคอมพิวเตอร์ที่เข้าร่วมโดเมนโดยใช้ Group Policies ซึ่งซับซ้อนกว่านี้ สามารถกำหนดค่าการอัปเดต Root Certificates บนคอมพิวเตอร์ผู้ใช้ในเครือข่าย Windows ที่ตัดการเชื่อมต่ออินเทอร์เน็ตได้หลายวิธี

วิธีแรก สมมติว่าคุณดาวน์โหลดและคัดลอกไฟล์ที่มี Root Certificates ไปยังเครือข่ายที่แยกต่างหากเป็นประจำ สามารถดาวน์โหลดไฟล์ที่มี Microsoft Root Certificates ปัจจุบันได้ดังนี้:

certutil.exe –generateSSTFromWU roots.sst

จากนั้น Root Certificates จากไฟล์นี้สามารถปรับใช้ผ่าน SCCM หรือ PowerShell Startup script ใน GPO:

$sstStore = (Get-ChildItem -Path \\fr-dc01\SYSVOL\woshub.com\rootcert\roots.sst )
$sstStore | Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root

วิธีที่สอง คือดาวน์โหลด Microsoft Root Certificates จริงด้วยคำสั่ง:

Certutil -syncWithWU -f \\fr-dc01\SYSVOL\woshub.com\rootcert\

ไฟล์ Root Certificate จำนวนมาก (รูปแบบไฟล์ CRT) จะปรากฏในโฟลเดอร์เครือข่ายที่แชร์ (รวมถึงไฟล์ authrootstl.cab, disallowedcertstl.cab, disallowedcert.sst, thumbprint.crt)

การอัปเดตรายการ Trusted Root Certificates ใน Windows

จากนั้นใช้ Group Policy Preferences เพื่อเปลี่ยนค่าพารามิเตอร์รีจิสทรี RootDirURL ภายใต้ HKLM\Software\Microsoft\SystemCertificates\AuthRoot\AutoUpdate พารามิเตอร์นี้ควรชี้ไปยังโฟลเดอร์เครือข่ายที่แชร์ซึ่งคอมพิวเตอร์ Windows ของคุณจะรับ Root Certificates ใหม่ รันคอนโซล GPMC.msc ของโดเมน สร้าง GPO ใหม่ เปลี่ยนเป็นโหมดแก้ไข Policy และขยายส่วน Computer Configuration → Preferences → Windows Settings → Registry สร้างคุณสมบัติ Registry ใหม่ด้วยการตั้งค่าต่อไปนี้:

  • 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\

การอัปเดตรายการ Trusted Root Certificates ใน Windows

เหลือแค่ Link Policy นี้บน OU ของคอมพิวเตอร์ และหลังอัปเดตการตั้งค่า GPO บนไคลเอนต์ ให้ตรวจสอบ Root Certificates ใหม่ใน Certstore

พารามิเตอร์ GPO Turn off Automatic Root Certificates Update ภายใต้ Computer Configuration → Administrative Templates → System → Internet Communication Management → Internet Communication ควรปิดใช้งานหรือไม่ได้กำหนดค่า

วิธีอัปเดต Trusted Root Certificates ใน Windows 7

แม้ Windows 7 จะอยู่ในช่วง End of Support แล้ว แต่ผู้ใช้และบริษัทหลายแห่งยังใช้อยู่

หลังติดตั้ง Windows 7 แบบสะอาด คุณอาจพบว่าโปรแกรมและเครื่องมือสมัยใหม่หลายอย่างทำงานไม่ได้ เนื่องจากถูกเซ็นด้วยใบรับรองใหม่ โดยเฉพาะมีการร้องเรียนว่า .Net Framework 4.8 หรือ Microsoft Visual Studio (vs_Community.exe) ไม่สามารถติดตั้งบน Windows 7 SP1 x64 ได้หากไม่อัปเดต Root Certificates

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.

การอัปเดตรายการ Trusted Root Certificates ใน Windows

เพื่ออัปเดต Root Certificates ใน Windows 7 ต้องดาวน์โหลดและติดตั้ง MSU update 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)

หลังจากนั้น สามารถใช้ certutil สร้างไฟล์ SST พร้อม Root Certificates (บนคอมพิวเตอร์ปัจจุบันหรืออีกเครื่อง):

certutil.exe -generateSSTFromWU c:\ps\roots.sst

ตอนนี้นำเข้าใบรับรองเข้า Trusted ได้:

รัน MMC → add snap-in → certificates → computer account → local computer คลิกขวา Trusted root certification authority, All Tasks → Import หาไฟล์ SST ของคุณ (ในประเภทไฟล์เลือก Microsoft Serialized Certificate Store — *.sst) → Open → Place all certificates in the following store → Trusted Root Certification Authorities

อัปเดต Root Certificates บน Windows XP ด้วยเครื่องมือ Rootsupd.exe

ใน Windows XP ใช้ยูทิลิตี้ rootsupd.exe อัปเดต Root Certificates ของคอมพิวเตอร์ รายการ Root และ Revoked Certificates ในมันอัปเดตเป็นประจำ เครื่องมือนี้เผยแพร่เป็นอัปเดตแยก KB931125 (Update for Root Certificates) มาดูว่าสามารถใช้ได้ตอนนี้หรือไม่

  1. ดาวน์โหลดยูทิลิตี้ rootsupd.exe จากลิงก์ https://download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/rootsupd.exe ณ ขณะนี้ (มกราคม 2021) ลิงก์ไม่ทำงาน Microsoft ตัดสินใจลบออกจากสาธารณะ วันนี้สามารถดาวน์โหลด rootsupd.exe จากเว็บไซต์ Kaspersky — https://media.kaspersky.com/utilities/CorporateUtilities/rootsupd.zip;
  2. เพื่อติดตั้ง Windows Root Certificates ให้รันไฟล์ rootsupd.exe แต่เราจะลองตรวจสอบเนื้อหาอย่างละเอียด ดึงใบรับรองจากไฟล์ Executable ด้วยคำสั่ง: rootsupd.exe /c /t: C:\PS\rootsupd
    การอัปเดตรายการ Trusted Root Certificates ใน Windows
  3. ใบรับรองเก็บในไฟล์ SST เช่น authroots.sst, delroot.sst ฯลฯ เพื่อลบหรือติดตั้งใบรับรอง ใช้คำสั่ง:
    updroots.exe authroots.sst
    updroots.exe -d delroots.sst

อย่างไรก็ตาม ตามที่เห็น ไฟล์ใบรับรองเหล่านี้สร้างเมื่อวันที่ 4 เมษายน 2013 (เกือบหนึ่งปีก่อนจบการสนับสนุน Windows XP อย่างเป็นทางการ) ดังนั้นเครื่องมือจึงไม่ได้รับการอัปเดตตั้งแต่นั้นมาและไม่สามารถใช้ติดตั้งใบรับรองที่ทันสมัยได้

แต่คุณสามารถใช้เครื่องมือ cerutil ใน Windows 10/11 ดาวน์โหลด root.sst คัดลอกไฟล์นั้นไปที่ Windows XP และติดตั้งใบรับรองด้วย updroots.exe:

updroots.exe c:\temp\roots.sst

มีข้อมูลว่าเครื่องมือ updroots.exe ไม่แนะนำให้ใช้ใน Windows 10 1803+ และ Windows 11 รุ่นใหม่ เพราะอาจทำลาย Microsoft Root CA บนอุปกรณ์

ในบทความนี้ เราดูหลายวิธีในการอัปเดต Trusted Root Certificates บนคอมพิวเตอร์เครือข่าย Windows ที่แยกจากอินเทอร์เน็ต (disconnected environment)