Корневые сертификаты — это фундамент, на котором держится вся безопасность 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-консоль
- Нажмите
Win + R, введитеmmc.exe - Меню Файл → Добавить или удалить оснастку
- Выберите Сертификаты → Добавить
- Укажите Учётная запись компьютера → Локальный компьютер
- Разверните: Certificates → Trusted Root Certification Authorities → Certificates
Просмотр через 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 сама подтягивает корневые сертификаты из Microsoft Trusted Root Certificate Program через Windows Update. Схема простая: приложение лезет на HTTPS-ресурс, натыкается на незнакомый корневой сертификат — система проверяет его отпечаток по онлайн-списку Microsoft и, если всё совпало, тихо скачивает и устанавливает его. Пользователь ничего не замечает.
Но автообновление можно случайно или намеренно отключить. На практике это происходит в трёх ситуациях:
- Групповая политика: параметр
Turn off Automatic Root Certificates Updateв разделе Computer Configuration → Administrative Templates → System → Internet Communication Management - Реестр: значение
DisableRootAutoUpdate = 1в ключеHKLM:\Software\Policies\Microsoft\SystemCertificates\AuthRoot - Отсутствие доступа к интернету — классика для изолированных серверных сегментов, где это вообще не предусмотрено архитектурой
Проверка статуса автообновления
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
- Запустите
certlm.msc - Перейдите в Trusted Root Certification Authorities → Certificates
- Правый клик → All Tasks → Import
- Выберите файл
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"
Обновление в изолированных сетях через 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 создайте параметр реестра:
- 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\contoso.com\rootcert\
Turn off Automatic Root Certificates Update выключена (Not Configured) или отключена (Disabled). Если она включена, Windows не будет обращаться даже к внутреннему источнику RootDirURL.
Проверка успешного обновления
Дата последней синхронизации:
certutil -verifyctl AuthRoot | findstr /i "lastsynctime"
В Event Viewer ищите события CAPI2 в журнале Application:
- Event ID 4100 — успешное получение сертификата
- Event ID 4097 — успешное добавление корневого сертификата
Публикация корневых сертификатов в 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:
- Перейдите к
CN=Public Key Services,CN=Services,CN=Configuration,DC=contoso,DC=com - Проверьте контейнеры AIA и Certification Authorities
Автоматизация обновления: скрипт для регулярного запуска
Создайте задачу в 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
Чеклист: обновление корневых сертификатов
- Проверить текущее количество и срок действия:
Get-ChildItem cert:\LocalMachine\Root | Measure-Object - Убедиться, что автообновление не заблокировано GPO
- На машине с интернетом:
certutil -generateSSTFromWU roots.sst - Скопировать SST-файл в SYSVOL или на файловый сервер
- Для изолированных сетей: настроить RootDirURL через GPO
- Установить отозванные сертификаты:
certutil -enterprise -f -v -AddStore disallowed disallowedcert.stl - Проверить результат:
certutil -verifyctl AuthRoot - Настроить ежемесячную задачу обновления SST-файла
Корневые сертификаты — штука незаметная, пока всё не сломается разом. Устаревшее хранилище — это и битый 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-инфраструктуру на постоянное сопровождение. Работаем с юридическими лицами в Москве и регионах.
