В операционные системы семейства Windows встроена система автоматического обновления корневых сертификатов с сайта Microsoft. Компания MSFT в рамках программы корневых сертификатов Microsoft Trusted Root Certificate Program, ведет и публикует в своем онлайн хранилище список сертификатов для клиентов и устройств Windows. Если проверяемый сертификат в своей цепочке сертификации относится к корневому CA, который участвует в этой программе, система автоматически скачает с узла Windows Update и добавит такой корневой сертификат в доверенные.
ОС Windows запрашивает обновление корневых сертификатов (certificate trust lists — CTL) один раз в неделю. Если в Windows отсутствует прямой доступ к каталогу Windows Update, то система не сможет обновить корневые сертификаты, соответственно у пользователя могут быть проблемы с открытием сайтов (SSL сертификаты которых подписаны CA, к которому нет доверия, см. статью об ошибке в Chrome «Этот сайт не может обеспечить безопасное соединение«), либо с установкой запуском подписанных приложений или скриптов.
В этой статье попробуем разобраться, как можно вручную обновить список корневых сертификатов в TrustedRootCA в изолированных сетях, или компьютерах/серверах без прямого подключения к Интернету.
Управление корневыми сертификатами компьютера в Windows 10
Как посмотреть список корневых сертфикатов компьютера с Windows?
- Чтобы открыть хранилище корневых сертфикатов компьютера в Windows 10/8.1/7/Windows Server, запустите консоль mmc.exe;
- Нажмите Файл (File) -> Добавить или удалить оснастку (Add/Remove Snap-in), в списке оснасток выберите Сертификаты (Certificates) -> Добавить (Add);
- В диалоговом окне выберите что вы хотите управлять сертификатами учетной записью компьютера (Computer account);
- Далее -> Ok -> Ok;
- Разверните 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)}
В консоли mmc вы можете просмотреть информацию о любом сертификате или удалить его из доверенных.
Вы можете вручную перенести файл корневого сертификата с одного компьютера на другой через функцию Экспорта/Импорта.
- Вы можете экспортировать любой сертификат .CER в файл, щелкнув по нему и выбрав “Все задачи” -> “Экспорт”;
- Затем с помощью команды Импорт можно импортировать этот сертификат на другом компьютере.
Утилита rootsupd.exe
В Windows XP для обновления корневых сертификатов использовалась утилита rootsupd.exe. В этой утилита содержится список корневых и отозванных сертификатов, зашитых в которой регулярно обновлялся. Сама утилита распространялась в виде отдельного обновления KB931125 (Update for Root Certificates).
- Скачайте утилиту rootsupd.exe, перейдя по ссылке (по состоянию на 15.07.2019 ссылка не работает, возможно в Microsoft решили убрать ее из общего доступа. На данный момент вы можете скачать утилиту с сайта kaspersky.com — http://media.kaspersky.com/utilities/CorporateUtilities/rootsupd.zip);
- Для установки корневых сертификатов Windows, достаточно запустить файл rootsupd.exe. Но мы попробуем более внимательно рассмотреть его содержимое, распаковав его с помощью команды:
rootsupd.exe /c /t:C:\PS\rootsupd
- Сертификаты содержатся в SST файлах: authroots.sst, delroot.sst и т.п. Для удаления/установки сертификатов можно воспользоваться командами:
updroots.exe authroots.sst
updroots.exe -d delroots.sst
Но, как вы видите, дата создания этих файлов 4 апреля 2013 (почти за год до окончания официальной поддержки Windows XP). Таким образом, с этого времени утилита не обновлялась и не может быть использована для установки актуальных сертификатов. Однако нам чуть позже понадобится файл updroots.exe.
Certutil: получение корневых сертификатов через Windows Update
Утилита управления и работы с сертификатами Certutil (появилась в Windows 10), позволяет скачать с узлов Windows Update и сохранить в SST файл актуальный список корневых сертификатов.
Для генерации SST файла, на компьютере Windows 10 с доступом в Интернет, выполните с правами администратора команду:
certutil.exe -generateSSTFromWU roots.sst
В результате в целевом каталоге появится файл SST, содержащий актуальный список сертификатов. Дважды щелкните по нему для открытия. Данный файл представляет собой контейнер, содержащий доверенные корневые сертификаты.
В открывшейся mmc оснастке управления сертификатами вы можете экспортировать любой из полученных сертификатов. В моем случае, список сертификатов содержал 358 элемента. Естественно, экспортировать сертификаты и устанавливать по одному не рационально.
certutil -syncWithWU
. Полученные таким образом сертификаты можно распространить на клиентов с помощью GPO.Для установки всех сертификатов из SST файла и добавления их в список корневых сертфикатов компьютера можно воспользоваться командами PowerShell:
$sstStore = ( Get-ChildItem -Path C:\ps\rootsupd\roots.sst )
$sstStore | Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root
Также можно воспользоваться утилитой updroots.exe (она содержится в архиве rootsupd.exe, который мы распаковали в предыдущем разделе):
updroots.exe roots.sst
Запустите оснастку certmgr.msc и убедитесь, что все сертификаты были добавлены в хранилище Trusted Root Certification Authority.
Список корневых сертификатов в формате STL
Есть еще один способ получения списка сертификатов с сайта Microsoft. Для этого нужно скачать файл http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab (обновляется дважды в месяц).С помощью любого архиватора (или проводника Windows) распакуйте содержимое архива authrootstl.cab. Он содержит один файл authroot.stl.
Файл authroot.stl представляет собой контейнер со списком доверенных сертификатов в формате Certification Trust List.
Данный файл можно установить в системе с помощью контекстного меню файла STL (Install CTL).
Или с помощью утилиты certutil:
certutil -addstore -f root authroot.stl
root "Доверенные корневые центры сертификации" CTL "0" добавлен в хранилище. CertUtil: -addstore — команда успешно выполнена.
Также вы можете импортировать сертификаты из консоли управления сертификатами (Trust Root Certification Authorities –>Certificates -> All Tasks > Import).
Укажите путь к вашему STL файлу сертификатами.
После выполнения команды, в консоли управления сертификатами (certmgr.msc) в контейнере Trusted Root Certification Authorities (Доверенные корневые сертификаты) появится новый раздел с именем Certificate Trust List (Список доверия сертификатов).
Аналогичным образом можно скачать и установить список с отозванными сертификатами, которые были исключены из программы Root Certificate Program. для этого, скачайте файл disallowedcertstl.cab (http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/disallowedcertstl.cab), распакуйте его и добавьте в раздел Untrusted Certificates командой:
certutil -addstore -f disallowed 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).
Затем с помощью 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\
Осталось назначить эту политику на компьютеры и после обновления политик проверить появление новых корневых сертификатов в хранилище.
В этой статье мы рассмотрели несколько способов обновления корневых сертификатов на ОС Windows, изолированной от Интернета.
вроде метод через updroots.exe надежнее чем через Install CTL или certutil -addstore
по крайней мере на винде без обновлений из STL файла импортятся далеко не все сертификаты. и если его открыть то там очень много будет сертификатов без имени.
Согласен, на мой взгляд это самый правильный способ. Но устанавливается 300+ сертификатов, жуть
команда «certutil.exe -generateSSTFromWU roots.sst» на Win7 не должна работать? Как лучше на семерке с выключенными обновлениями, но с интернетом обновить сертификаты? Вторым указанным в статье способом?
Добрый день!
Как добавить сертификат в хранилище компьютера? certmgr.msc работает же с сертификатами текущего пользователя. Также как добавить сертификат в хранилище root?
Добрый!
Запустите mmc и добавьте новую оснастку Сертификаты. При добавлении у вас спросят хотоите ли вы управлять сертфикатами пользователя, компьютера или учетной записи службы
большое спасибо за инфу!
Ссылка
не работает. Какая новая ссылка?
Действительно, ссылка не рабочая. Видим в MSFT решили убрать утилиту из паблика. Воможно это и правильно, сертификаты в ней уже сильно устарели.
Для обновления корневых сертфикатов воспользуйтесь одним из следующих методов в статье.
Кому нужна утилита, она есть на странице Антивируса Касперского, проверил — работает : https://support.kaspersky.ru/13727
Доброго времени суток !
Пожалуста напишите статтю как раз и на всегда заблокировать обновления на 10 , которым конца и краю нет …. Вы пишите как обновить сертификаты … Но пожалуста помогите ИЗБАВИТСЯ от обновлений 🙂 и может быть сертификатов 🙂
Это будет совет из серии «плохих». Коль вы отключаете обновления, вы уверены что в дальнейшем регулярно будете качать и ставить их руками?
Файла STL но команда на CTL. Прикол.)
rootsupd.exe /c /t: C:\PS\rootsupd — после t: лишний пробел
Спасибо, исправил
В команде Certutil -syncWithWU -f -f \\dc01\SYSVOL\winitpro.ru\rootcert\ два ключа -f. Это не описка?
Да, ошибка. Нужен один аргумент -f
Здравствуйте! Спасибо за статью. Помогите, пожалуйста, разобраться. Командой
certutil.exe -generateSSTFromWU roots.sst
скачиваются актуальные корневые сертификаты. Далее их можно импортировать в систему. Но ведь есть отозванные сертификаты и те, которые нужно удалить?! Такие списки как-то можно с помощью утилиты certutil.exe получить, а потом импортировать или удалить из системы? В интернте попались вот такие ссылки на sst-файлы:http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/disallowedcert.sst
http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authroots.sst
http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/delroots.sst
http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/roots.sst
http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/updroots.sst
Правильно ли будет, если скачать их и с помощью команд указанных в файле rootsupd.inf, идущем в комплекте с программой updroots.exe, интегрировать в систему? Заранее спасибо!
Команды:
updroots.exe authroots.sst
updroots.exe updroots.sst
updroots.exe -l roots.sst
updroots.exe -d delroots.sst
Привет.
У меня Касперский стал блокировать некоторые сайты после 30 мая. Как я понял, что проблема только у меня. В техподдержке сказали, что разберутся, а пока дали ссылку на эту страницу (потому что проблема сертификатами).
Столько вариантов по обновлению сертификатов, что у меня башка лопает. Выбрал пункт «Список корневых сертификатов в формате STL» скачал архив, распаковал. В свойствах увидел пункт «Установить список доверия STL» (на вин 7), вроде что-то установилось, но сайт не грузится. Нужно перезагрузиться или я не правильно сделал?
Ну как бы не факт что дело именно с сертификатами на вашем компе. Вы не задумывались почему это с определенной даты у вас появилась эта проблема? Может все таки дело в каперском? Отключите контроль сертификатов в нем и не мучайтесь.