Обновление корневых сертификатов в Windows

По умолчанию, операционные системы Windows автоматически обновляют корневые сертификаты с сайта Microsoft. Компания в рамках программы корневых сертификатов Microsoft Trusted Root Certificate Program, ведет и публикует в своем онлайн хранилище сертификаты для клиентов и устройств Windows. Если проверяемый сертификат в своей цепочке сертификации относится к корневому CA, который участвует в этой программе, Windows автоматически скачает с узла Microsoft Update и добавит такой корневой сертификат в доверенные на вашем компьютере.

Windows автоматически обновляет список корневых сертификатов (certificate trust lists — CTL) раз в неделю. Если в Windows отсутствует прямой доступ к каталогу Windows Update, то система не сможет обновить корневые сертификаты, соответственно у пользователя могут быть проблемы с открытием сайтов (SSL сертификаты которых подписаны недоверенными CA, см. статью об ошибке в Chrome Этот сайт не может обеспечить безопасное соединение), либо с установкой и запуском подписанных приложений или скриптов.

В этой статье попробуем разобраться, как в Windows вручную обновить список корневых сертификатов в TrustedRootCA в изолированных сетях, или компьютерах/серверах без прямого подключения к Интернету, а также на старых версиях Windows, снятых с обслуживания (Windows 7, XP. Server 2003, 2008)

Примечание. Если ваши компьютеры выходят в Интернет через прокси-сервер, для автоматического обновления корневых сертификатов Microsoft рекомендует открыть прямой доступ (bypass) к веб-узлам Microsoft. Но это не всегда возможно/применимо.

Управление корневыми сертификатами в Windows 10 и 11

Как посмотреть список корневых сертификатов на устройстве Windows?

  1. Чтобы открыть хранилище корневых сертификатов компьютера в Windows запустите консоль mmc.exe
  2. Нажмите Файл (File) -> Добавить или удалить оснастку (Add/Remove Snap-in), в списке оснасток выберите Сертификаты (Certificates) -> Добавить (Add);
  3. В диалоговом окне выберите что вы хотите управлять сертификатами учетной записи компьютера (Computer account);mmc оснастка диспетчера сертфикатов в windows
  4. Далее -> Ok -> Ok;
  5. Разверните Certificates (Сертификаты) -> Trusted Root Certification Authorities Store (Доверенные корневые сертификаты). В этом списке содержится список доверенных корневых сертификатов вашего компьютера.

Вы можете вывести список доверенных корневых сертификатов на компьютере со сроками их действия с помощью PowerShell:

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

Можно вывести список истекших сертификатов, или которые истекут в ближайшие 30 дней:

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

powershell вывести список просроченных корневых сертификатов

В целях безопасности рекомендует периодически проверять хранилище доверенных сертификатов на наличие поддельных сертификатов с помощью утилиты Sigcheck. Утилита позволяет сравнить список сертификатов, установленных на компьютере со списком корневых сертификатов на сайте Microsoft (можно скачать офлайн файл с актуальными сертификатами authrootstl.cab).

Вы можете вручную перенести файл корневого сертификата с одного компьютера на другой с помощью функцию Экспорта/Импорта.

  1. Вы можете экспортировать любой сертификат .CER в файл, щелкнув по нему и выбрав “Все задачи” -> “Экспорт”;экспорт корневого сертфиката в windows
  2. Затем с помощью команды Импорт можно импортировать этот сертификат на другом компьютере.импорт сертфиката в windows

Включить/отключить автоматическое обновление корневых сертификатов в Windows

Как мы уже упомянули, Windows по умолчанию сама обновляет корневые сертификаты. Вы можете включить или отключить обновление сертификатов в Windows через GPO или реестр.

Откройте локальный редактор групповой политики (gpedit.msc) и перейдите в раздел Computer Configuration -> Administrative Templates -> System -> Internet Communication Management -> Internet Communication.

Параметр Turn off Automatic Root Certificates Update в этом разделе позволяет отключить автоматическое обновление корневых сертификатов через сайт Windows Update. По умолчанию это политика не настроена и Windows всегда пытается автоматически обновлять корневые сертификаты.

включить или отключить автоматическое обновление корневых сертфикатов в Windows с помощью GPO

Если эта политика не настроена, а сертификаты не обновляются автоматически, проверьте не задан ли вручную параметр реестра, отвечающий за эту настройку. Проверьте значение параметра реестра с помощью PowerShell:

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

параметр реестра DisableRootAutoUpdate - отключение обновление доверенных корневых сертификатов

Если команда вернет, что значение ключа DisableRootAutoUpdate=1 , значит на вашем компьютере отключено обновление корневых сертификатов. Чтобы включить его, измените значение параметра на 0.

Есть еще один параметр GPO, позволяющий принудительно включить или отключить авто обновление сертификатов.

  1. Перейдите в Computer Configuration -> Windows Settings -> Security Settings -> Public Key Policies
  2. Откройте параметр Certificate Path Validation Settings и перейдите на вкладку Network Retrieval
  3. По умолчанию политика не настроена, но если политика включена (Define these policy settings) и опция Automatically update certificates in the Microsoft Root Certificate Program(recommended) отключена, компьютер не будет пытаться автоматически обновлять корневые сертификаты. Групповая политики автообновления корневых сертфикатов microsoft

Ручное обновление корневых сертификатов в Windows 10 и 11

Утилита управления и работы с сертификатами Certutil (появилась в Windows 10, для Windows 7 доступна в виде отдельного обновления), позволяет скачать с узлов Windows Update и сохранить в SST (Serialised Certificate Store) файл актуальный список корневых сертификатов.

Для генерации SST файла, на компьютере Windows 10/11 с доступом в Интернет, выполните с правами администратора команду:

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

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

certutil.exe generateSSTFromWU скачать корневые сертификаты с microsoft

В результате в целевом каталоге появится файл SST, содержащий актуальный список сертификатов. Дважды щелкните по нему для открытия. Данный файл представляет собой контейнер, содержащий доверенные корневые сертификаты.

sst файл - контейнер для сертификатов

В открывшейся mmc консоли вы можете экспортировать любой из полученных сертификатов. В моем случае, список сертификатов содержал 507 элементов. Естественно, экспортировать сертификаты и устанавливать по одному не рационально.

Совет. Для генерации индивидуальных файлов сертификатов можно использовать команду:

 certutil -syncWithWU .

certutil syncWithWU скачать список последних корневых сертфикатов в windows

Полученные таким образом сертификаты можно распространить на клиентов с помощью GPO.

Для установки всех сертификатов из SST файла и добавления их в список корневых сертификатов компьютера можно воспользоваться командами PowerShell:

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

Или можно импортировать сертификаты вручную из консоли certlm.msc :

  1. Выберите хранилище корневых сертификатов -> Import Ручной импорт корневого сертфиката
  2. Выберите ваш SST файл (Browse и в фильтре типа файлов выберите All files или Microsoft Serialized Certificate Store).Импорт SST файла сертификатов

Запустите оснастку certmgr.msc и убедитесь, что все сертификаты были добавлены в хранилище Trusted Root Certification Authority. В нашем примере на Windows 11 количество корневых сертификатов увеличилось с 34 до 507.

все корневые сертфикаты windows

Чистая копия Windows после установки содержит в корневом хранилище лишь небольшое количество сертификатов. Если компьютер подключен к интернету, остальные корневые сертификаты будут устанавливаться автоматически (по требованию), если ваше устройство попытается получить доступ к HTTPS сайту/SSL сертификату, в чей цепочке доверия есть отпечаток из CTL Microsoft. Поэтому как правило, нет необходимости устанавливать в свое локальное хранилище сразу все корневые сертификаты Microsoft.

Список корневых сертификатов в формате STL

Есть еще один способ получения списка сертификатов с сайта Microsoft. Для этого нужно скачать файл http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab (обновляется дважды в месяц).С помощью любого архиватора (или проводника Windows) распакуйте содержимое архива authrootstl.cab. Он содержит один файл authroot.stl.

authroot.stl

Файл authroot.stl представляет собой контейнер со списком отпечатков (thumbprint) доверенных сертификатов Microsoft в формате Certification Trust List.

Certification Trust List authroot.stl

Данный файл можно установить в системе с помощью утилиты certutil:

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

certutil установить STL файл доверенных сертфикатов в Windows

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

Также вы можете импортировать сертификаты из консоли управления сертификатами (Trust Root CertificationAuthorities –>Certificates -> All Tasks > Import). Укажите путь к вашему STL файлу сертификатами.

импорт stl сертфикатов

После выполнения команды, в консоли управления сертификатами ( certmgr.msc ) в контейнере Trusted Root Certification Authorities (Доверенные корневые сертификаты) появится новый раздел с именем Certificate Trust List (Список доверия сертификатов).

Certificate Trust List (STL) в windows

Аналогичным образом можно скачать и установить список с отозванными сертификатами, которые были исключены из программы Root Certificate Program. для этого, скачайте файл disallowedcertstl.cab (http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/disallowedcertstl.cab), распакуйте его и добавьте в раздел Untrusted Certificates командой:

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

Обновление корневых сертификатов в Windows с помощью GPO в изолированных средах

Если у вас возникла задача регулярного обновления корневых сертификатов в изолированном от Интернета домене Active Directory, есть несколько более сложная схема обновления локальных хранилищ сертификатов на компьютерах домена с помощью групповых политик. В изолированных сетях Windows вы можете настроить обновление корневых сертификатов на компьютерах пользователей несколькими способами.

Первый способ предполагает, что вы регулярно вручную скачиваете и копируете в вашу изолированную сеть файл с корневыми сертификатами, полученный так:

certutil.exe –generateSSTFromWU roots.sst

Затем сертификаты из данного файла можно установить через SCCM или PowerShell логон скрипт в GPO:
$sstStore = ( Get-ChildItem -Path \\dc01\SYSVOL\winitpro.ru\rootcert\roots.sst )
$sstStore | Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root

Второй способ предполагает получение актуальных корневых сертификатов с помощью команды:

Certutil -syncWithWU -f \\dc01\SYSVOL\winitpro.ru\rootcert\

В указанном сетевом каталоге появится ряд файлов корневых сертификатов (CRT) и в том числе файлы (authrootstl.cab, disallowedcertstl.cab, disallowedcert.sst, thumbprint.crt).

корневые сертфикаты crt для windows

Затем с помощью GPP нужно изменить значение параметра реестра RootDirURL в ветке HKLM\Software\Microsoft\SystemCertificates\AuthRoot\AutoUpdate. Этот параметр должен указывать на сетевую папку, из которой клиентам нужно получать новые корневые сертификаты. Перейдите в секцию редактора GPO Computer Configuration -> Preferences -> Windows Settings -> Registry. И создайте новый параметр реестра со значениями:

Action: Update
Hive: HKLM
Key path: Software\Microsoft\SystemCertificates\AuthRoot\AutoUpdate
Value name: RootDirURL
Type: REG_SZ
Value data: file://\\dc01\SYSVOL\winitpro.ru\rootcert\

настроить каталог RootDirURL для обновления сертфикатов с помощью gpo

Теперь при доступе к сайту или запуске приложения с неизвестным сертификатом, Windows будет проверять его цепочку доверия, скачивая списки CTL из указанной локальной папки по RootDirURL, и автоматически добавлять соответствующий корневой сертификат в хранилище.

В нашем случае успешное обновление корневого сертификата Let’s Encrypt в Windows из локального хранилища можно подтвердить наличием таких событий от историка CAPI2 в журнале Application:

Event ID: 4100

Successful auto update retrieval of third-party root certificate from: <file://\\myserver\rootcer/CABD2A79A1076A31F21D253635CB039D4329A5E8.crt>.

Event ID: 4097

Successful auto update of third-party root certificate: Subject: <CN=ISRG Root X1, O=Internet Security Research Group, C=US> Sha1 thumbprint: <CABD2A79A1076A31F21D253635CB039D4329A5E8>.

CAPI2 событие в event viewer где видно что выполнено обновлнеие корневых сертфикатов из сетевой папке

Дату последней синхронизации хранилища корневых сертификатов можно вывести командой:

certutil -verifyctl AuthRoot | findstr /i "lastsynctime"

certutil - дата последнего обновления сертфикатов на компьютере

Осталось назначить эту политику на компьютеры и после обновления настроек GPO на клиенте проверить появление новых корневых сертификатов в хранилище.

Политика Turn off Automatic Root Certificates Update в разделе Computer Configuration -> Administrative Templates -> System -> Internet Communication Management -> Internet Communication settings должна быть выключена или не настроена.

Публикация корневых сертификатов в Active Directory

Есть еще один способ публикации корневых сертификатов в Active Directory. Идея заключается в том, что нужные корневые сертификаты добавляются в раздел конфигурации AD, откуда они автоматически получаются и устаканиваются всеми доменными компьютерами (не требуется наличие развернутых служб AD Certificate Services PKI).

Для публикации одного сертификата в AD используется команда:

certutil -f -dspublish myRootCA.crl

Если надо установить в AD сразу все сертификаты из указанной папки, нужно воспользоваться скриптом PowerShell.

Сгенерируйте список корневых сертификатов *.crt и сохраните их в указанном каталоге:

$certpath = "C:\temp\Certs\"
Certutil -syncWithWU $certpath

Затем установите все сертификаты из каталога в AD:

$certificates = ( Get-ChildItem -Path $certpath -Filter "*.crt" )
foreach ($certificate in $certificates){
certutil.exe -dspublish -f ($certificate.FullName) RootCA
}

certutil.exe dspublish публикация корневых сертфикатов в AD

Откройте консоль ADSIEdit.msc и проверьте, что сертификаты были установлены в два раздел конфигурации AD: AIA и Certification Authorities в CN=Public Key Services,CN=Services,CN=Configuration,DC=winitpro,DC=ru

Добавляем сертфикаты в конфигурацию AD

Теперь после обновления групповых политик на любом компьютере домена, в его корневые сертификаты будут автоматически установлены все сертификаты из AD.

авто установка корневых сертфикатов из AD

Вам даже не нужно настраивать GPO для распространения сертификатов. Однако у этого метода есть существенные недостатки: увеличивается база AD (хранит более 500 сертификатов), сертификаты устанавливаются на все компьютеры принудительно (а не по требованию, как в предыдущем способе с GPO и параметром RootDirURL ), сложности управления большим количеством опубликованных сертификатов в AD.

Поэтому этот способ можно использовать в редких случаях, когда вы хотите опубликовать/обновить на компьютерах один-два критичных корневых сертификатов.

Обновление корневых сертификатов в Windows 7

Несмотря на то, что Windows 7 уже снята с поддержки, есть много пользователей и компаний, в которых она еще используется.

После установки чистой Windows 7 из образа вы может столкнуться, что многие современные программы и инструменты на ней не работают из-за того, что они подписаны с помощью новых сертификатов. В частности, были жалобы, что в Windows 7 64 без обновления сертификатов не удается установить .Net Framework 4.8. или

vs_Community.exe с ошибкой:

installer manifest failed signature validation

Чтобы обновить корневые сертификаты в Windows 7, нужно скачать и установить MSU обновление: KB2813430.

После этого вы можете использовать утилиту certutil для генерации SST файла с сертификатами (на этом или на другом компьютере):

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

Теперь можно импортировать сертификаты в доверенные:

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

Утилита rootsupd.exe для обновления сертификатов в Windows XP

В Windows XP для обновления корневых сертификатов использовалась утилита rootsupd.exe. В этой утилита содержится список корневых и отозванных сертификатов, зашитых в которой регулярно обновлялся. Сама утилита распространялась в виде отдельного обновления KB931125 (Update for Root Certificates).

  1. Скачайте утилиту rootsupd.exe, перейдя по ссылке (Microsoft убрала утилиту из общего доступа. На данный момент вы можете скачать утилиту с сайта. На данный момент вы можете скачать утилиту с сайта kaspersky.com — http://media.kaspersky.com/utilities/CorporateUtilities/rootsupd.zip);
  2. Распакуйте содержимое утилиты rootsupd.exe в указанный каталог: rootsupd.exe /c /t:C:\PS\rootsupd rootsupd.exe утилита обновления списка корневых сертфикатов для Windows XP
  3. В самой утилите хранятся очень старые версии SST файлов сертификатов (видно по дате создания этих файлов 4 апреля 2013, почти за год до окончания официальной поддержки Windows XP)
  4. Поэтому нужно заменить файл roots.sst более новой версией файла корневых сертификатов, сгенерированного на другом Windows 11 компьютере командой: certutil.exe -generateSSTFromWU roots.sst
  5. После этого для установки новых корневых сертификатов из нового SST файла восользуйтесь комндой: updroots.exe  roots.sst

updroot утилита для ручного обновления корневых сертфиатов из SST файла в Windows

В этой статье мы рассмотрели несколько способов обновления корневых сертификатов на компьютерах Windows, изолированных от Интернета, включая ручное обновление корневых сертификатов и централизованно через доменные групповые политики.


Предыдущая статья Следующая статья


Комментариев: 33 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)