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