Поделиться через


Certmgr.exe (средство диспетчера сертификатов)

Диспетчер сертификатов (Certmgr.exe) предназначен для управления сертификатами, списками доверия сертификатов (CTL) и списками отзыва сертификатов (CRL).

Диспетчер сертификатов устанавливается с пакетом SDK для Windows 10. Для запуска этого средства используйте Командную строку разработчика или PowerShell для разработчиков в Visual Studio.

Примечание.

Диспетчер сертификатов (Certmgr.exe) является служебной программой командной строки, в то время как сертификаты (Certmgr.msc) — это оснастка консоли управления (MMC). Так как Certmgr.msc обычно находится в каталоге системы Windows, ввод certmgr в командной строке может загружать оснастки MMC сертификатов, даже если вы открыли командную строку разработчика для Visual Studio. Это происходит, так как путь к оснастке предшествует пути к средству Диспетчера сертификатов в переменной Path среды. При возникновении этой проблемы можно выполнить команды Certmgr.exe, указав путь к исполняемому файлу, например %ProgramFiles(x86)%\Windows Kits\10\bin\10.0.22000.0\arm64\certmgr.exe.

Общие сведения о сертификатах X.509 см. в разделе Работа с сертификатами.

Синтаксис

В командной строке введите следующее:

certmgr [/add | /del | /put] [options]
[/s[/r registryLocation]] [sourceStorename]
[/s[/r registryLocation]] [destinationStorename]

Параметры

Аргумент Description
sourceStorename Хранилище сертификатов, содержащее существующие сертификаты, списки доверия сертификатов (CTL) и списки отзыва сертификатов (CRL) для добавления, удаления, сохранения или отображения. Это может быть файл хранилища или хранилище систем.
destinationStorename Конечное хранилище сертификатов или файл.
Вариант Описание
/add Добавляет сертификаты, CTL и CRL в хранилище сертификатов.
/all Добавляет все записи при использовании параметра /add. Удаляет все записи при использовании с /del. Отображает все записи при использовании без параметров /add или /del . Параметр /all нельзя использовать вместе с параметром /put.
/c Добавляет сертификаты при использовании параметра /add. Удаляет сертификаты при использовании с /del. Сохраняет сертификаты при использовании с /put. Отображает сертификаты при использовании без параметра /add, /del или /put.
/CRL При использовании с параметром /add добавляет списки отзыва сертификатов (CRL). Удаляет crLs при использовании с /del. Сохраняет списки crls при использовании с /put. Отображает списки отзыва сертификатов (CRL) при использовании без параметра /add, /del или /put.
/CTL При использовании с параметром /add добавляет списки доверия сертификатов (CTL). Удаляет списки ctls при использовании с /del. Сохраняет списки ctls при использовании с /put. Отображает списки доверия сертификатов (CTL) при использовании без параметра /add, /del или /put.
/del Удаляет сертификаты, CTL и CRL из хранилища сертификатов.
/e encodingType Указывает тип шифрования сертификата. Значение по умолчанию — X509_ASN_ENCODING.
/f dwFlags Задает открытый флаг хранилища. Это параметр dwFlags, передаваемый методу CertOpenStore. По умолчанию используется значение CERT_SYSTEM_STORE_CURRENT_USER. Этот параметр обрабатывается, только если задан параметр /y.
/h[elp] Отображает синтаксис команд и параметров программы.
/n nam Задает общее имя добавляемого, удаляемого или сохраняемого сертификата. Этот параметр может применяться только для сертификатов, его нельзя задавать для CTL и CRL.
/put Сохраняет в файл сертификат X.509, CTL или CRL из хранилища сертификатов. Файл сохраняется в формате X.509. Чтобы сохранить файл в формате PKCS #7, можно использовать параметр /7 с параметром /put. За параметром /put должен следовать параметр /c, /CTL или /CRL. Параметр /all нельзя использовать вместе с параметром /put.
/r location Указывает расположение системного хранилища в реестре. Этот параметр обрабатывается, только если задан параметр /s. Параметр location должен иметь одно из следующих значений.

- currentUser означает, что хранилище сертификатов находится в разделе HKEY_CURRENT_USER. Это значение по умолчанию.
- localMachine означает, что хранилище сертификатов находится в разделе HKEY_LOCAL_MACHINE.
/s Означает, что хранилище сертификатов является системным. Если этот параметр не задан, хранилищем считается StoreFile.
/sha1 sha1Hash Задает хэш SHA1 добавляемого, удаляемого или сохраняемого сертификата, CTL или CRL.
/v Включает отображение подробных сведений о сертификатах, CTL и CRL. Этот параметр невозможно использовать с параметрами /add, /del или /put.
/y provider Задает имя поставщика хранилища.
/7 Сохраняет конечное хранилище как объект PKCS #7.
/? Отображает синтаксис команд и параметров программы.

Замечания

Основные функции программы Certmgr.exe.

  • Отображение сведений о сертификатах, CTL и CRL на консоли.
  • Добавляет сертификаты, CTL и CRL в хранилище сертификатов.
  • Удаляет сертификаты, CTL и CRL из хранилища сертификатов.
  • Сохраняет в файл сертификат X.509, CTL или CRL из хранилища сертификатов.

Программа Certmgr.exe работает с двумя типами хранилищ сертификатов: системным и StoreFile. Не обязательно указывать тип хранилища сертификатов; Certmgr.exe может определить тип хранилища и выполнить соответствующие операции.

При запуске программы Certmgr.exe без параметров выполняется оснастка "certmgr.msc" с графическим интерфейсом пользователя, облегчающим управление сертификатами, что также можно сделать из командной строки. В графическом интерфейсе пользователя имеется мастер импорта, копирующий сертификаты, CTL и CRL с диска в хранилище сертификатов.

Чтобы найти имена хранилищ X509Certificate для параметров sourceStorename и destinationStorename, можно скомпилировать и выполнить следующий код.

using System;
using System.Security.Cryptography.X509Certificates;

public class Example
{
   public static void Main()
   {
      foreach (var storeValue in Enum.GetValues(typeof(StoreName))) {
         X509Store store = new X509Store((StoreName) storeValue);
         store.Open(OpenFlags.ReadOnly);
         Console.WriteLine(store.Name);
      }
   }
}
Imports System.Security.Cryptography.X509Certificates

Module Example
    Public Sub Main()
        For Each storeValue In [Enum].GetValues(GetType(StoreName))
            Dim store As New X509Store(CType(storeValue, StoreName))
            store.Open(OpenFlags.ReadOnly)
            Console.WriteLine(store.Name)
        Next
    End Sub
End Module

Дополнительные сведения см. в разделе Работа с сертификатами.

Примеры

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

certmgr /v /s my

Следующая команда добавляет все сертификаты из файла myFile.ext в новый файл newFile.ext.

certmgr /add /all /c myFile.ext newFile.ext

Следующая команда добавляет сертификат в файле testcert.cer в хранилище системы my.

certmgr /add /c testcert.cer /s my

Следующая команда добавляет сертификат в файле TrustedCert.cer в хранилище корневых сертификатов.

certmgr /c /add TrustedCert.cer /s root

Следующая команда сохраняет сертификат с общим именем myCert в системном хранилище my в файл newCert.cer.

certmgr /add /c /n myCert /s my newCert.cer

Следующая команда удаляет все CTL из системного хранилища my и сохраняет полученное хранилище в файл newStore.str.

certmgr /del /all /ctl /s my newStore.str

Следующая команда сохраняет сертификат в системном хранилище my в файл newFile. Программа запросит у пользователя номер сертификата из хранилища my, который следует поместить в файл newFile.

certmgr /put /c /s my newFile

См. также