Корневые сертификаты — это фундамент, на котором держится вся безопасность Windows. Каждый раз, когда браузер открывает HTTPS-сайт, система молча пробегает по цепочке доверия: от сертификата сервера вверх, до корневого центра сертификации. То же самое происходит при подписании документов и подключении к VPN. Нет корневого сертификата или он просрочен — получите ошибку: SEC_ERROR_UNKNOWN_ISSUER, CERT_TRUST_IS_UNTRUSTED_ROOT или банальное «Ваше подключение не является приватным».

В статье собрали все рабочие способы обновления корневых сертификатов — автоматически через Windows Update, вручную через certutil и PowerShell, через групповые политики, и отдельно разобрали самый неудобный случай: изолированные сети без доступа к интернету. Всё проверено на Windows 10, Windows 11, Windows Server 2019 и 2022.

Как Windows управляет корневыми сертификатами

Windows держит корневые сертификаты в системном хранилище Trusted Root Certification Authorities (Доверенные корневые центры сертификации). Добраться до него можно несколькими путями.

Просмотр через MMC-консоль

  1. Нажмите Win + R, введите mmc.exe
  2. Меню ФайлДобавить или удалить оснастку
  3. Выберите СертификатыДобавить
  4. Укажите Учётная запись компьютераЛокальный компьютер
  5. Разверните: CertificatesTrusted Root Certification AuthoritiesCertificates

Просмотр через PowerShell

Get-ChildItem cert:\LocalMachine\Root | Format-List

Чтобы сразу найти сертификаты, которые истекают в ближайшие 30 дней:

Get-ChildItem cert:\LocalMachine\Root |
  Where-Object { $_.NotAfter -lt (Get-Date).AddDays(30) } |
  Select-Object NotAfter, Subject | Format-Table -AutoSize

Быстрый просмотр через certlm.msc

Есть способ быстрее. Просто запустите certlm.msc — менеджер сертификатов локального компьютера откроется сразу на нужном хранилище, без лишних шагов.

Совет: Чистая установка Windows 10/11 содержит около 30–40 корневых сертификатов. Остальные устанавливаются автоматически «по требованию» при первом обращении к сайту или сервису, использующему соответствующий сертификат.

Автоматическое обновление: как оно работает и почему может не работать

По умолчанию Windows сама подтягивает корневые сертификаты из Microsoft Trusted Root Certificate Program через Windows Update. Схема простая: приложение лезет на HTTPS-ресурс, натыкается на незнакомый корневой сертификат — система проверяет его отпечаток по онлайн-списку Microsoft и, если всё совпало, тихо скачивает и устанавливает его. Пользователь ничего не замечает.

Но автообновление можно случайно или намеренно отключить. На практике это происходит в трёх ситуациях:

Проверка статуса автообновления

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

Если значение равно 1 — автообновление отключено. Включается так:

Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\SystemCertificates\AuthRoot' -Name DisableRootAutoUpdate -Value 0

Ручное обновление через certutil

Хотите обновить все корневые сертификаты за один раз? Проще всего через встроенную утилиту certutil.exe.

Генерация SST-файла со всеми сертификатами

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

Команда идёт прямо на серверы Windows Update и скачивает полный набор корневых сертификатов в формате Microsoft Serialized Certificate Store (.sst). Файл можно просто открыть двойным кликом — запустится MMC-оснастка со списком всех сертификатов. Обычно их там 400–500 штук.

Важно: Команда требует прямого доступа к серверам ctldl.windowsupdate.com. Если компьютер за прокси или в изолированной сети, используйте метод с промежуточным компьютером, описанный ниже.

Скачивание индивидуальных файлов сертификатов

certutil -syncWithWU C:\Temp\Certs\

Эта команда работает иначе: каждый сертификат скачивается отдельным .crt-файлом, плюс отдельно приходят authrootstl.cab и disallowedcertstl.cab. Удобно, когда нужно разобраться, что именно установлено, или поставить только конкретные сертификаты.

Установка из SST-файла через PowerShell

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

Установка через консоль certlm.msc

  1. Запустите certlm.msc
  2. Перейдите в Trusted Root Certification AuthoritiesCertificates
  3. Правый клик → All TasksImport
  4. Выберите файл roots.sst (в типе файлов укажите All files или Microsoft Serialized Certificate Store, иначе файл просто не отобразится)

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

Microsoft отдельно публикует Certificate Trust List (CTL) — подписанный список отпечатков (thumbprints) доверенных корневых сертификатов. Это файл authroot.stl, и его можно скачать независимо от всего остального.

Скачивание STL-файла

Ссылки для загрузки:

http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab

Microsoft обновляет файл примерно дважды в месяц. Распакуйте архив — внутри будет authroot.stl.

Установка STL-файла

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

Установка списка отозванных сертификатов

Кроме доверенных сертификатов, Microsoft ведёт отдельный список запрещённых (disallowed) — скомпрометированных и отозванных:

certutil -enterprise -f -v -AddStore disallowed "C:\Temp\disallowedcert.stl"
Совет: Всегда устанавливайте и доверенные, и отозванные списки. Отозванные сертификаты не менее важны: они защищают от скомпрометированных центров сертификации, таких как DigiNotar.

Обновление в изолированных сетях через GPO

Классический корпоративный сценарий, с которым мы работаем постоянно. Серверы и рабочие станции в закрытых сегментах сети отрезаны от интернета — но им всё равно нужны актуальные корневые сертификаты для внутренних HTTPS-порталов, VPN и корпоративного центра сертификации. Без них всё ломается тихо и неожиданно.

Способ 1: логон-скрипт через GPO

Подготовка (на компьютере с интернетом):

certutil.exe -generateSSTFromWU \\dc01\SYSVOL\contoso.com\rootcert\roots.sst

Создайте PowerShell-скрипт и назначьте его через GPO как Computer Startup Script:

$sstPath = "\\dc01\SYSVOL\contoso.com\rootcert\roots.sst"
if (Test-Path $sstPath) {
    $sstStore = Get-ChildItem -Path $sstPath
    $sstStore | Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root
    Write-EventLog -LogName Application -Source "CertUpdate" -EventId 1000 -Message "Root certificates updated from $sstPath"
}

Способ 2: параметр RootDirURL через GPO

Есть способ элегантнее — просто сказать Windows, откуда брать сертификаты. Не снаружи, а с вашего внутреннего ресурса. Сначала подготовьте файлы:

certutil -syncWithWU -f \\dc01\SYSVOL\contoso.com\rootcert\

Затем через Group Policy Preferences создайте параметр реестра:

Важно: Убедитесь, что политика Turn off Automatic Root Certificates Update выключена (Not Configured) или отключена (Disabled). Если она включена, Windows не будет обращаться даже к внутреннему источнику RootDirURL.

Проверка успешного обновления

Дата последней синхронизации:

certutil -verifyctl AuthRoot | findstr /i "lastsynctime"

В Event Viewer ищите события CAPI2 в журнале Application:

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

В доменной среде есть ещё один удобный вариант — опубликовать корневые сертификаты прямо в Active Directory. Все машины домена подхватят их автоматически, без скриптов и лишних телодвижений.

Публикация сертификатов в AD

# Скачиваем сертификаты
certutil -syncWithWU C:\Temp\Certs\

# Публикуем каждый сертификат в AD
$certs = Get-ChildItem -Path "C:\Temp\Certs" -Filter "*.crt"
foreach ($cert in $certs) {
    certutil.exe -dspublish -f $cert.FullName RootCA
}

Проверить публикацию можно через ADSIEdit.msc:

Внимание: Публикация сотен сертификатов в AD увеличивает размер базы данных и объём репликации. Используйте этот метод только для нескольких критически важных сертификатов. Для массового обновления предпочтительнее способ с RootDirURL.

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

Создайте задачу в Task Scheduler, которая будет ежемесячно обновлять SST-файл на файловом сервере:

# Update-RootCerts.ps1 — запускать на машине с интернетом
$sharePath = "\\dc01\SYSVOL\contoso.com\rootcert"
$timestamp = Get-Date -Format "yyyy-MM-dd"

# Генерируем свежий SST
certutil.exe -generateSSTFromWU "$sharePath\roots.sst"

# Синхронизируем индивидуальные сертификаты
certutil -syncWithWU -f "$sharePath"

# Логируем
"[$timestamp] Root certificates updated" | Out-File -Append "$sharePath\update.log"
Write-Host "Root certificates updated at $timestamp" -ForegroundColor Green

Диагностика проблем с сертификатами

Проверка цепочки доверия

certutil -verify -urlfetch C:\Temp\server-cert.cer

Проверка конкретного HTTPS-сайта

# PowerShell
$url = "https://example.com"
$request = [System.Net.WebRequest]::Create($url)
$request.GetResponse() | Out-Null
$cert = $request.ServicePoint.Certificate
Write-Host "Subject: $($cert.Subject)"
Write-Host "Issuer: $($cert.Issuer)"
Write-Host "Valid: $($cert.GetEffectiveDateString()) - $($cert.GetExpirationDateString())"

Экспорт текущего хранилища для сравнения

Get-ChildItem cert:\LocalMachine\Root |
  Select-Object Thumbprint, Subject, NotAfter |
  Export-Csv -Path C:\Temp\root-certs-audit.csv -NoTypeInformation -Encoding UTF8

Чеклист: обновление корневых сертификатов

Корневые сертификаты — штука незаметная, пока всё не сломается разом. Устаревшее хранилище — это и битый HTTPS, и проблемы с VPN, и ошибки подписи, и недоступность госпорталов. Мы видели, как из-за этого вставала работа целого офиса. Настройте автообновление один раз — и этот класс проблем просто исчезнет.

Часто задаваемые вопросы

Почему браузер показывает ошибку сертификата на HTTPS-сайтах?

Чаще всего виноваты устаревшие корневые сертификаты. Windows умеет подгружать их автоматически при обращении к HTTPS-сайтам — но если автообновление зарублено через GPO или Windows Update недоступен, хранилище постепенно устаревает. В итоге браузер не может выстроить цепочку доверия и просто показывает ошибку.

Как обновить корневые сертификаты на компьютере без интернета?

Запустите certutil -generateSSTFromWU roots.sst на любом компьютере с интернетом, перенесите файл на целевую машину и импортируйте через PowerShell. Если машин много — проще один раз настроить GPO с параметром RootDirURL, и дальше всё само.

Безопасно ли устанавливать все корневые сертификаты Microsoft?

Да, можно. Файл roots.sst включает только сертификаты, прошедшие отбор по программе Microsoft Trusted Root Certificate Program — они регулярно проверяются и аудируются.

Сколько корневых сертификатов должно быть в Windows?

Свежая установка Windows приходит примерно с 30–40 корневыми сертификатами. После полного обновления их может стать 400–500 и больше. Это штатная ситуация, не пугайтесь.

Нужна помощь специалистов?

ООО «АйТи Фреш» возьмёт это на себя

Не хватает времени или своих специалистов — мы настроим, оптимизируем и возьмём вашу IT-инфраструктуру на постоянное сопровождение. Работаем с юридическими лицами в Москве и регионах.

15+лет опыта
25+клиентов
40Gсвоя сеть
24/7поддержка