Makecert.exe (средство создания сертификатов)

Инструмент для создания сертификатов генерирует сертификаты X.509, предназначенные исключительно для тестирования. Этот инструмент создает пару из открытого и закрытого ключей для цифровой подписи и помещает ее в файл сертификата. Он также привязывает пару ключей к указанному имени издателя и создает сертификат X.509, который связывает заданное пользователем имя с открытым ключом пары.

Параметры Makecert.exe разделяются на основные и дополнительные. Основные параметры используются при создании сертификатов чаще всего. Дополнительные параметры придают программе гибкость.

Закрытые ключи сертификатов, генерируемые данным инструментом, не предназначены для хранения в SNK-файлах. Если необходимо хранить закрытый ключ, следует использовать для этого контейнер ключа. Дополнительные сведения о хранении закрытого ключа в контейнере ключей см. в разделе Практическое руководство. Хранение асимметричных ключей в контейнере ключей.

Примечание

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

Это средство устанавливается автоматически с Visual Studio и пакетом SDK Windows. Чтобы запустить инструмент, мы рекомендуем использовать командную строку Visual Studio или командную строку пакета Windows SDK (командную оболочку). Эти служебные программы позволяют легко работать с инструментом, не переходя к папке установки. Дополнительные сведения см. в разделе Командная строка Visual Studio и пакета Windows SDK.

  • Если на компьютере установлена среда Visual Studio: на панели задач последовательно щелкните Start, All Programs, Visual Studio, Visual Studio Tools и Visual Studio Command Prompt.

    – или –

    Если на компьютере установлен пакет Windows SDK: на панели задач щелкните Start, выберите All Programs и откройте папку с пакетом Windows SDK, затем щелкните Command Prompt (или CMD Shell).

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

makecert [options] outputCertificateFile

Аргумент

Описание

создаваемый_файл_сертификата

Имя файла с расширением .cer, в который будет записан тестовый сертификат X.509.

Основные параметры

Параметр

Описание

-n имя

Задает имя сертификата субъекта. Имя должно соответствовать стандарту X.500. Проще всего заключить имя в двойные кавычки и поставить перед ним префикс CN=; например, -n "CN=myName".

-pe

Помечает созданный закрытый ключ как экспортируемый. Это позволит включить закрытый ключ в сертификат.

-sk имя_ключа

Задает местонахождение контейнера ключей субъекта, содержащего закрытый ключ. Если контейнер не существует, он будет создан.

-sr расположение

Задает местонахождение хранилища сертификатов субъекта. Расположение может быть либо currentuser (значение по умолчанию), либо localmachine.

-ss хранилище

Задает имя хранилища сертификатов субъекта, в котором будет храниться созданный сертификат.

-# число

Задает серийный номер от 1 до 2 147 483 647. Значение по умолчанию – это уникальное значение, сформированное программой Makecert.exe.

-$ центр

Задает заверителя подписи сертификата. Этот параметр может принимать два значения: commercial (для сертификатов, используемых коммерческими издателями программного обеспечения) или individual (для сертификатов, используемых индивидуальными издателями ПО).

-?

Выводит синтаксис команд и список основных параметров для этого инструмента.

-!

Выводит синтаксис команд и список дополнительных параметров для этого инструмента.

Дополнительные параметры

Параметр

Описание

-a алгоритм

Задает алгоритм подписи. алгоритм должен представлять собой md5, sha1 (по умолчанию), sha256, sha384 или sha512.

-b мм/дд/гггг

Задает начало срока действия сертификата. По умолчанию используется текущая дата.

-crl

Формирует список отзыва сертификатов (CRL) вместо сертификата.

-cy тип_сертификата

Задает тип сертификата. Допустимые значения: end (для конечного субъекта) и authority (для заверителя сертификата).

-e мм/дд/гггг

Задает конец срока действия сертификата. По умолчанию установлено значение 12/31/2039 11:59:59 GMT.

-eku oid[,oid…]

Вставляет в сертификат список разделенных запятыми идентификаторов объектов (OID) использования расширенного ключа.

-h число

Задает максимальное число уровней дерева, исходящего из данного сертификата.

-ic файл

Задает файл сертификата поставщика.

-ik имя_ключа

Задает имя контейнера ключей поставщика.

-iky тип_ключа

Определяет тип ключа эмитента, который должен быть одним из следующих: signature (что означает, что этот ключ используется для цифровой подписи), exchange (что означает, что этот ключ используется для шифрования и обмена ключами,) или целое число, представляющее тип поставщика. По умолчанию можно указать 1 для ключа обмена или 2 для ключа сигнатуры.

-in имя

Задает общее имя сертификата поставщика.

-ip поставщик

Задает имя поставщика CryptoAPI для поставщика сертификата. Сведения об имени поставщика CryptoAPI см. в описании параметра –sp.

-ir расположение

Задает местонахождение хранилища сертификатов поставщика. Расположение может быть либо currentuser (значение по умолчанию), либо localmachine.

-is хранилище

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

-iv файл_pvk

Задает PVK-файл закрытого ключа поставщика.

-iy тип

Задает тип поставщика CryptoAPI для поставщика сертификата. Сведения о типе поставщика CryptoAPI см. в описании параметра –sy.

-l ссылка

Ссылка на политику (например, на URL-адрес).

-len число

Задает длину создаваемого ключа в битах.

-m число

Задает срок действия сертификата в месяцах.

-nscp

Включает расширение авторизации клиента Netscape.

-r

Создает самозаверяющий сертификат.

-sc файл

Задает файл сертификата субъекта.

-sky тип_ключа

Определяет тип ключа субъекта, который должен быть одним из следующих: signature (что означает, что этот ключ используется для цифровой подписи), exchange (что означает, что этот ключ используется для шифрования и обмена ключами,) или целое число, представляющее тип поставщика. По умолчанию можно указать 1 для ключа обмена или 2 для ключа сигнатуры.

-sp поставщик

Задает имя поставщика CryptoAPI субъекта, который должен быть определен в подразделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider. Если присутствуют –sp и –sy, тип поставщика CryptoAPI должен соответствовать значению Type подраздела поставщика.

-sv файл_pvk

Задает PVK-файл закрытого ключа субъекта. Если файл не существует, он будет создан.

-sy тип

Задает имя поставщика CryptoAPI субъекта, который должен быть определен в подразделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider Types. Если присутствуют –sy и –sp, имя поставщика CryptoAPI должно соответствовать значению Name подраздела типа поставщика.

-tbs

Задает сертификат или файл списка отзыва сертификатов для подписания.

Примеры

Следующая команда создает тестовый сертификат, выданный тестовым корневым центром по умолчанию, и записывает его в файл testCert.cer.

makecert testCert.cer

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

makecert -ss testCertStore

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

makecert -ss testCertStore -sr currentuser

Следующая команда создает тестовый сертификат и записывает его в файл textXYZ.cer, используя указанный контейнер ключей субъекта и имя его сертификата, соответствующее стандарту X.500.

makecert -sk XYZ -n "CN=XYZ Company" testXYZ.cer 

Следующая команда создает сертификат, выданный тестовым корневым центром по умолчанию, создает PVK-файл и записывает сертификат в хранилище и в этот файл.

makecert -sv testCert.pvk -ss testCertStore testCert.cer

Следующая команда создает сертификат, выданный тестовым корневым центром по умолчанию, создает контейнер ключей и записывает сертификат в хранилище и в этот файл.

makecert -sk myTestKey -ss testCertStore testCert.cer

Следующая команда создает самозаверяющий сертификат, задает имя субъекта "CN=XYZ Company", задает начало и окончание срока действия, помещает ключ в хранилище my, задает ключ обмена и помечает закрытый ключ как экспортируемый.

makecert -r -pe -n "CN=XYZ Company" -b 01/01/2005 -e 01/01/2010 -sky exchange -ss my

Следующая команда создает самозаверяющий сертификат, который может использоваться для тестирования веб-приложения, которое использует протокол SSL (Secure Sockets Layer) на веб-сервере, URL-адрес которого является www.example.com. OID, определяемый параметром –eku, идентифицирует этот сертификат как сертификат сервера SSL. Сертификат хранится в хранилище my и доступен на уровне компьютера (а не пользователя). Закрытый ключ сертификата можно экспортировать и сертификат действителен с 10 мая 2010 до 22 декабря 2011 года.

Makecert –r –pe –n CN="www.example.com" –b 05/10/2010 –e 12/22/2011 –eku 1.3.6.1.5.5.7.3.1 –ss my –sr localmachine -sky exchange –sp "Microsoft RSA SChannel Cryptographic Provider" –sy 12

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

makecert -sk myTestKey -ss testCertStore
makecert -is testCertStore -ss anotherTestStore

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

makecert -sk myTestKey -n "CN=XXZZYY" -ss my
makecert -is my -in "XXZZYY" -ss anotherTestStore

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

makecert -sk myTestKey -n "CN=XXZZYY" -ss my testCert.cer
makecert -is my -ic testCert.cer -ss anotherTestStore

См. также

Ссылки

Cert2spc.exe (средство проверки сертификата издателя программного обеспечения)

Командная строка Visual Studio и пакета Windows SDK

Другие ресурсы

Инструменты .NET Framework

Журнал изменений

Дата

Журнал

Причина

Апрель 2011

Добавлены сведения об использовании командных строк Visual Studio и Windows SDK.

Улучшение информации.

Май 2010

Значительно пересмотрено.

Обратная связь от клиента.