Корневые сертификаты — фундамент безопасности в 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, встроенная в Windows.
Генерация 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-файла
URL для загрузки:
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-порталами и центром сертификации предприятия.
Способ 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-файла
Корневые сертификаты — невидимый, но критически важный компонент IT-инфраструктуры. Устаревшие сертификаты приводят к сбоям 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-инфраструктуру на постоянное сопровождение. Работаем с юридическими лицами в Москве и регионах.
