Как вручную обновить корневые сертификаты в Windows
В операционных системах семейства Windows, начиная с Windows 7, присутствует система автоматического обновления корневых сертификатов с сайта Microsoft. MSFT в рамках программы Microsoft Trusted Root Certificate Program , ведет и публикует в своем онлайн хранилище список сертификатов для клиентов и устройств Windows. В том, случае если проверяемый сертификат в своей цепочке сертфикации относится к корневому CA, который участвует в этой программе, система автоматически скачает с узла Windows Update и добавит такой корневой сертификат в доверенные.
В том случае, если у Windows отсутствует прямой доступ к каталогу Windows Update, то система не сможет обновить корневой сертификат, соответственно у пользователя могут быть проблемы с открытием сайтов (SSL сертификаты которых подписаны CA, к которому нет доверия), либо с установкой / запуском подписанных приложений или скриптов .
В этой статье попробуем разобраться, как можно вручную обновить список корневых сертификатов в TrustedRootCA в изолированных системах, или системах без прямого подключения к интернету.
Примечание . В том случае, если пользователи получают доступ в интернет через прокси сервер, для того, что работало автоматическое обновление корневых сертификатов на компьютера пользователей, Microsoft рекомендует открыть прямой доступ (bypass) к узлам Microsoft. Но это не всегда возможно/применимо.
Утилита rootsupd.exe
В Windows XP для обновления корневых сертификатов использовалась утилита rootsupd.exe , список корневых и отозванных сертификатов, зашитых в которой регулярно обновлялся. Сама утилита распространялась в виде отдельного обновления KB931125 (Update for Root Certificates). Посмотрим, можно ли использовать ли ее сейчас.
- Скачайте утилиту rootsupd.exe , перейдя по ссылке http://download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/rootsupd.exe (по состоянию на 15.09.2017 ссылка не работает, возможно в Microsoft решили убрать ее из общего доступа).
Для установки сертификатов, достаточно запустить файл. Но мы попробуем более внимательно рассмотреть его содержимое, распаковав его с помощью команды: 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 ). Таким образом, с этого времени утилита не обновлялась и не может быть использована для установки актуальных сертификатов.
Получения списка корневых сертификатов с узла Windows Update с помощью Сertutil
Последняя версия утилиты для управления и работы с сертификатам Сertutil (представленная в Windows 10), позволяет скачать и сохранить в SST файл актуальный список корневых сертификатов.
Для генерации SST файла, на компьютере Windows 10 с прямым доступом в Интернет, выполните с правами администратора команду:
certutil.exe -generateSSTFromWU roots.sst
Совет . Для генерации индивидуальных файлов сертификатов можно использовать команду certutil -syncWithWU. Полученные таким образом сертификаты можно распространить на клиентов с помощью GPO .
Для установки всех сертификатов, содержащихся в файле, воспользуемся утилитой updroots.exe (она содержится в архиве rootsupd.exe, который мы распаковали в предыдущем разделе).
Установка сертификатов из STT фалйла выполняется командой:
Список корневых сертификатов в формате 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
После выполнения команды, в консоли управления сертификатами (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. В том случае, если возникла задача регулярного обновления корневых сертификатов в отделенном от внешней сети домене, есть несколько более сложная схема обновления локальных хранилищ сертификатов на компьютерах домена с помощью групповых политик. Об этом подробнее в одной из ближайших статей.
CertUtil.exe на Windows XP & ЦС на Windows Server 2012 R2 — 0x80094011 — Имеющиеся разрешения для центра сертификации не позволяют текущему пользователю получать сертификаты
Из исходных данных имеем — автономный Центр сертификации (ЦС) на базе Windows Server 2012 R2 и клиентский компьютер на базе Windows XP SP3, с которого выполняется попытка получения корневого сертификата ЦС с помощью утилиты CertUtil.exe (из состава Windows Server 2003 Administration Tools Pack). В результате получаем ошибку:
0x80094011 (-2146877423) Имеющиеся разрешения для центра сертификации не позволяют текущему пользователю получать сертификаты
Для решения проблемы в указанном документе предлагается два варианта :
1. Заменить на клиентских компьютерах с Windows XP ОС на более новую.
2. Понизить уровень безопасности ЦС для поддержки клиентов на базе Windows XP.
Первый вариант приемлем далеко не во всех случаях (по разного рода причинам).
Для реализации второго варианта на сервере ЦС нужно выполнить команду:
После этого следует перезапустить службу сертификации Active Directory Certificate Services service
В результате запрос с клиента под управлением Windows XP должен отработать успешно…
В дальнейшем, когда станет возможной реализация варианта #1, вернуть обратно настройки ЦС можно следующим образом:
Ручное обновление корневых сертификатов на Windows
Актуальные системы семейства Windows, подключенные к Интернету, могут автоматически обновлять корневые сертификаты. В противном случае, обновление необходимо выполнять вручную. Если это не делать, мы можем столкнуться с рядом проблем:
- Не открываются или выдают предупреждение безопасности некоторые (или все) сайты, работающие по https.
- Некорректная работа отдельных приложений (например, антивирусных систем).
- Ошибки при подключении по удаленному рабочему столу.
Это пример ошибок, который не претендует на свою полному. Чаще всего, проблемы встречаются на системах, снятых с обслуживание компанией Microsoft (Windows XP, 7, а также Server 2003, 2008).
Обновление сертификатов
Обновление доверенных корневых сертификатов выполняется во время обновления операционной системы. Если последнее включено, то нашего участия не требуется, иначе, можно установить обновление вручную. Пример такого пакета — KB931125.
Однако, если операционная система устарела, разработчик прекращает выпуск обновлений, и мы не можем воспользоваться средствами обновления системы. В таком случае, необходимо сделать выгрузку корневых сертификатов на актуальной системе и перенести их на устаревший.
Получение актуальных сертификатов
Для начала, выгрузим сертификаты на компьютере с актуальной версией Windows (10) и подключением к сети Интернет.
Создадим каталог, в который будет выгружен файл с корневыми сертификатами, например, C:\CA (папка CA на диске C).
Открываем командную строку от администратора и вводим команду:
certutil.exe -generateSSTFromWU C:\CA\roots.sst
* где C:\CA — каталог, который мы создали; roots.sst — файл, в который будут выгружены сертификаты.
В папке C:\CA мы должны увидеть файл roots.sst.
Установка/обновление корневых сертификатов
Полученный на предыдущем этапе файл переносим на компьютер, где необходимо обновить доверенные корневые сертификаты, например, также в папку C:\CA. Скачиваем утилиту rootsupd и распаковываем ее в этот же каталог.
Открываем командную строку от администратора и вводим команду:
C:\CA\rootsupd.exe /c /t:C:\CA
* где C:\CA — папка, в которую мы перенесли корневые сертификаты.
В появившемся окне Roots Update:
. выбираем No, чтобы не переписывать наш файл roots.sst.
В папке C:\CA должны появится новые файлы, в том числе, утилита updroots. Вводим теперь команду: