Управление сертификатами с помощью хранилищ сертификатов

В течение определенного периода времени сертификаты будут накапливаться на компьютере пользователя. Для управления этими сертификатами требуются средства. CryptoAPI предоставляет эти средства в качестве функций для хранения, извлечения, удаления, перечисления (перечисления) и проверки сертификатов. CryptoAPI также предоставляет средства для присоединения сертификатов к сообщениям.

CryptoAPI предлагает две main категории функций для управления сертификатами: функции, управляющие хранилищами сертификатов и функции, работающие с сертификатами, списки отзыва сертификатов (CRL) и списки доверия сертификатов (CCL) в этих хранилищах.

К функциям, которые управляют хранилищами сертификатов , относятся функции для работы с логическими или виртуальными хранилищами, удаленными хранилищами, внешними хранилищами и хранилищами, которые можно переместить.

Сертификаты, списки отзыва сертификатов и списки сертификатов могут храниться и поддерживаться в хранилищах сертификатов. Их можно извлечь из хранилища, где они были сохранены для использования в процессах проверки подлинности.

Хранилище сертификатов является центральным для всех функциональных возможностей сертификатов. Управление сертификатами осуществляется в хранилище с помощью функций с префиксом Cert. Типичное хранилище сертификатов — это связанный список сертификатов , как показано на следующем рисунке.

хранилище сертификатов

На предыдущем рисунке показано:

  • Каждое хранилище сертификатов имеет указатель на первый блок сертификата в этом хранилище.
  • Блок сертификата содержит указатель на данные этого сертификата и указатель "next" на следующий блок сертификата в хранилище.
  • Указатель next в последнем блоке сертификата имеет значение NULL.
  • Блок данных сертификата содержит контекст сертификата только для чтения и все расширенные свойства сертификата.
  • Блок данных каждого сертификата содержит счетчик ссылок , который отслеживает количество существующих указателей на сертификат.

Сертификаты в хранилище сертификатов обычно хранятся в каком-либо постоянном хранилище, например в файле диска или системном реестре. Хранилища сертификатов также можно создавать и открывать только в памяти. Хранилище памяти предоставляет временное хранилище сертификатов для работы с сертификатами, которые не нужно хранить.

Дополнительные расположения хранилищ позволяют хранить хранилища и искать их в различных частях реестра локального компьютера или с установленными соответствующими разрешениями в реестре на удаленном компьютере.

У каждого пользователя есть личное хранилище My, где хранятся сертификаты этого пользователя. Хранилище My может находиться в любом из множества физических расположений, включая реестр на локальном или удаленном компьютере, файл диска, базу данных, службу каталогов, смарт-карта или другое расположение. Хотя любой сертификат может храниться в хранилище "Мое", это хранилище должно быть зарезервировано для личных сертификатов пользователя: тех сертификатов, которые используются для подписывания и расшифровки сообщений этого пользователя.

Использование сертификатов для проверки подлинности зависит от наличия сертификатов, выданных некоторыми доверенными издателями сертификатов. Сертификаты для доверенных издателей сертификатов обычно хранятся в корневом хранилище, которое в настоящее время сохраняется в подразделе реестра. В контексте CryptoAPI корневое хранилище защищено, а диалоговые окна пользовательского интерфейса напоминают пользователю размещать в этом хранилище только доверенные сертификаты. В ситуациях корпоративной сети сертификаты могут быть отправлены (скопированы) системным администратором с компьютера контроллера домена в корневые хранилища на клиентских компьютерах. Этот процесс предоставляет всем членам домена аналогичные списки доверия.

Другие сертификаты могут храниться в системном хранилище центра сертификации (ЦС) или в созданных пользователем файловых хранилищах.

Список функций для использования и обслуживания хранилищ сертификатов см. в разделе Функции хранилища сертификатов.

Пример использования некоторых из этих функций см. в разделе Пример программы C. Операции хранилища сертификатов.

Управление состоянием хранилища сертификатов

Работа с сертификатами в хранилищах сертификатов

Ссылки на сертификаты

Хранилища коллекций

Логические и физические хранилища

Расположения системных магазинов

Миграция хранилища сертификатов