Хранилища сертификатов
Windows хранит сертификаты локально на компьютере в расположении хранилища, которое называется хранилищем сертификатов. Хранилище сертификатов часто имеет множество сертификатов, возможно, выданных несколькими различными центрами сертификации (ЦС).
Этот раздел содержит следующие подразделы:
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Windows driver documentation
Хранилище сертификатов доверенных корневых центров сертификации
Начиная с Windows Vista диспетчер Plug and Play (PnP) выполняет проверку подписи драйвера во время установки устройства и драйвера. Проверка выполняется успешно, если:
- Сертификат подписи, который использовался для создания подписи, был выдан центром сертификации (ЦС).
- Соответствующий корневой сертификат для ЦС устанавливается в хранилище сертификатов доверенных корневых центров сертификации. Таким образом, хранилище сертификатов доверенных корневых центров сертификации содержит корневые сертификаты всех ЦС, которым доверяет Windows.
По умолчанию хранилище сертификатов Доверенных корневых центров сертификации настроено с набором общедоступных центров сертификации, удовлетворяющих требованиям Программы корневых сертификатов Майкрософт. Администраторы могут настроить набор доверенных ЦС по умолчанию и установить собственный частный ЦС для проверки программного обеспечения.
Примечание Частный ЦС вряд ли будет доверенным за пределами сетевой среды.
Наличие действительной цифровой подписи гарантирует подлинность и целостность пакета драйвера. Однако это не означает, что конечный пользователь или системный администратор неявно доверяет издателю программного обеспечения. Пользователь или администратор должен решить, следует ли устанавливать или запускать приложение в индивидуальном порядке, основываясь на своих знаниях об издателе и приложении программного обеспечения. По умолчанию издатель является доверенным, только если его сертификат установлен в хранилище сертификатов доверенных издателей.
Имя хранилища сертификатов доверенных корневых центров сертификации — root. Корневой сертификат частного ЦС можно вручную установить в хранилище сертификатов доверенных корневых центров сертификации на компьютере с помощью средства CertMgr .
Примечание Политика проверки подписи драйвера, используемая диспетчером PnP, требует, чтобы корневой сертификат частного ЦС был ранее установлен в версии локального компьютера хранилища сертификатов корневых центров сертификации. Дополнительные сведения см. в статье Хранилища сертификатов «Локальный компьютер» и «Текущий пользователь».
Дополнительные сведения о подписи драйверов см. в разделе Политика подписывания драйверов.
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Windows driver documentation
Управление сертификатами с помощью хранилищ сертификатов
В течение определенного периода времени сертификаты будут накапливаться на компьютере пользователя. Для управления этими сертификатами требуются средства. CryptoAPI предоставляет эти средства в качестве функций для хранения, извлечения, удаления, перечисления (перечисления) и проверки сертификатов. CryptoAPI также предоставляет средства для присоединения сертификатов к сообщениям.
CryptoAPI предлагает две main категории функций для управления сертификатами: функции, управляющие хранилищами сертификатов и функции, работающие с сертификатами, списки отзыва сертификатов (CRL) и списки доверия сертификатов (CCL) в этих хранилищах.
К функциям, которые управляют хранилищами сертификатов , относятся функции для работы с логическими или виртуальными хранилищами, удаленными хранилищами, внешними хранилищами и хранилищами, которые можно переместить.
Сертификаты, списки отзыва сертификатов и списки сертификатов могут храниться и поддерживаться в хранилищах сертификатов. Их можно извлечь из хранилища, где они были сохранены для использования в процессах проверки подлинности.
Хранилище сертификатов является центральным для всех функциональных возможностей сертификатов. Управление сертификатами осуществляется в хранилище с помощью функций с префиксом Cert. Типичное хранилище сертификатов — это связанный список сертификатов , как показано на следующем рисунке.

На предыдущем рисунке показано:
- Каждое хранилище сертификатов имеет указатель на первый блок сертификата в этом хранилище.
- Блок сертификата содержит указатель на данные этого сертификата и указатель «next» на следующий блок сертификата в хранилище.
- Указатель next в последнем блоке сертификата имеет значение NULL.
- Блок данных сертификата содержит контекст сертификата только для чтения и все расширенные свойства сертификата.
- Блок данных каждого сертификата содержит счетчик ссылок , который отслеживает количество существующих указателей на сертификат.
Сертификаты в хранилище сертификатов обычно хранятся в каком-либо постоянном хранилище, например в файле диска или системном реестре. Хранилища сертификатов также можно создавать и открывать только в памяти. Хранилище памяти предоставляет временное хранилище сертификатов для работы с сертификатами, которые не нужно хранить.
Дополнительные расположения хранилищ позволяют хранить хранилища и искать их в различных частях реестра локального компьютера или с установленными соответствующими разрешениями в реестре на удаленном компьютере.
У каждого пользователя есть личное хранилище My, где хранятся сертификаты этого пользователя. Хранилище My может находиться в любом из множества физических расположений, включая реестр на локальном или удаленном компьютере, файл диска, базу данных, службу каталогов, смарт-карта или другое расположение. Хотя любой сертификат может храниться в хранилище «Мое», это хранилище должно быть зарезервировано для личных сертификатов пользователя: тех сертификатов, которые используются для подписывания и расшифровки сообщений этого пользователя.
Использование сертификатов для проверки подлинности зависит от наличия сертификатов, выданных некоторыми доверенными издателями сертификатов. Сертификаты для доверенных издателей сертификатов обычно хранятся в корневом хранилище, которое в настоящее время сохраняется в подразделе реестра. В контексте CryptoAPI корневое хранилище защищено, а диалоговые окна пользовательского интерфейса напоминают пользователю размещать в этом хранилище только доверенные сертификаты. В ситуациях корпоративной сети сертификаты могут быть отправлены (скопированы) системным администратором с компьютера контроллера домена в корневые хранилища на клиентских компьютерах. Этот процесс предоставляет всем членам домена аналогичные списки доверия.
Другие сертификаты могут храниться в системном хранилище центра сертификации (ЦС) или в созданных пользователем файловых хранилищах.
Список функций для использования и обслуживания хранилищ сертификатов см. в разделе Функции хранилища сертификатов.
Пример использования некоторых из этих функций см. в разделе Пример программы C. Операции хранилища сертификатов.
Хранилища сертификатов локального компьютера и текущего пользователя
Каждое из системных хранилищ сертификатов имеет следующие типы:
- Хранилище сертификатов локального компьютера Этот тип хранилища сертификатов является локальным для компьютера, глобальным для всех пользователей на компьютере и находится в корневом HKEY_LOCAL_MACHINE каталоге в реестре.
- Хранилище сертификатов текущего пользователя Этот тип хранилища сертификатов является локальным для учетной записи пользователя на компьютере и находится в корневом каталоге HKEY_CURRENT_USER реестра.
Сведения о конкретных расположениях в реестре хранилищ сертификатов см. в разделе Расположения системных хранилищ.
Все текущие хранилища сертификатов пользователей, кроме хранилища Текущий пользователь или личное, наследуют содержимое хранилищ сертификатов локального компьютера. Например, если сертификат добавляется в хранилище сертификатов доверенных корневых центров сертификации локального компьютера, все хранилища сертификатов доверенных корневых центров сертификации текущего пользователя (с указанным выше предостережением) также содержат сертификат.
Проверка подписи драйвера во время установки Plug and Play (PnP) требует, чтобы корневые сертификаты и сертификаты Authenticode, включая тестовые сертификаты, находились в хранилище сертификатов локального компьютера.
Дополнительные сведения о добавлении или удалении сертификатов из системных хранилищ сертификатов см. в разделе CertMgr.
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Windows driver documentation