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).
В командной строке введите следующее:
Имя файла с расширением .cer, в который будет записан тестовый сертификат X.509.
Основные параметры
Задает имя сертификата субъекта. Имя должно соответствовать стандарту X.500. Проще всего заключить имя в двойные кавычки и поставить перед ним префикс CN=; например, -n "CN=myName".
Помечает созданный закрытый ключ как экспортируемый. Это позволит включить закрытый ключ в сертификат.
Задает местонахождение контейнера ключей субъекта, содержащего закрытый ключ. Если контейнер не существует, он будет создан.
Задает местонахождение хранилища сертификатов субъекта. Расположение может быть либо currentuser (значение по умолчанию), либо localmachine.
Задает имя хранилища сертификатов субъекта, в котором будет храниться созданный сертификат.
Задает серийный номер от 1 до 2 147 483 647. Значение по умолчанию – это уникальное значение, сформированное программой Makecert.exe.
Задает заверителя подписи сертификата. Этот параметр может принимать два значения: commercial (для сертификатов, используемых коммерческими издателями программного обеспечения) или individual (для сертификатов, используемых индивидуальными издателями ПО).
Выводит синтаксис команд и список основных параметров для этого инструмента.
Выводит синтаксис команд и список дополнительных параметров для этого инструмента.
Дополнительные параметры
Задает алгоритм подписи. алгоритм должен представлять собой md5, sha1 (по умолчанию), sha256, sha384 или sha512.
Задает начало срока действия сертификата. По умолчанию используется текущая дата.
Формирует список отзыва сертификатов (CRL) вместо сертификата.
Задает тип сертификата. Допустимые значения: end (для конечного субъекта) и authority (для заверителя сертификата).
Задает конец срока действия сертификата. По умолчанию установлено значение 12/31/2039 11:59:59 GMT.
Вставляет в сертификат список разделенных запятыми идентификаторов объектов (OID) использования расширенного ключа.
Задает максимальное число уровней дерева, исходящего из данного сертификата.
Задает файл сертификата поставщика.
Задает имя контейнера ключей поставщика.
Определяет тип ключа эмитента, который должен быть одним из следующих: signature (что означает, что этот ключ используется для цифровой подписи), exchange (что означает, что этот ключ используется для шифрования и обмена ключами,) или целое число, представляющее тип поставщика. По умолчанию можно указать 1 для ключа обмена или 2 для ключа сигнатуры.
Задает общее имя сертификата поставщика.
Задает имя поставщика CryptoAPI для поставщика сертификата. Сведения об имени поставщика CryptoAPI см. в описании параметра –sp.
Задает местонахождение хранилища сертификатов поставщика. Расположение может быть либо currentuser (значение по умолчанию), либо localmachine.
Задает имя хранилища сертификатов поставщика.
Задает PVK-файл закрытого ключа поставщика.
Задает тип поставщика CryptoAPI для поставщика сертификата. Сведения о типе поставщика CryptoAPI см. в описании параметра –sy.
Ссылка на политику (например, на URL-адрес).
Задает длину создаваемого ключа в битах.
Задает срок действия сертификата в месяцах.
Включает расширение авторизации клиента Netscape.
Создает самозаверяющий сертификат.
Задает файл сертификата субъекта.
Определяет тип ключа субъекта, который должен быть одним из следующих: signature (что означает, что этот ключ используется для цифровой подписи), exchange (что означает, что этот ключ используется для шифрования и обмена ключами,) или целое число, представляющее тип поставщика. По умолчанию можно указать 1 для ключа обмена или 2 для ключа сигнатуры.
Задает имя поставщика CryptoAPI субъекта, который должен быть определен в подразделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider. Если присутствуют –sp и –sy, тип поставщика CryptoAPI должен соответствовать значению Type подраздела поставщика.
Задает PVK-файл закрытого ключа субъекта. Если файл не существует, он будет создан.
Задает имя поставщика CryptoAPI субъекта, который должен быть определен в подразделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider Types. Если присутствуют –sy и –sp, имя поставщика CryptoAPI должно соответствовать значению Name подраздела типа поставщика.
Задает сертификат или файл списка отзыва сертификатов для подписания.
Примеры
Следующая команда создает тестовый сертификат, выданный тестовым корневым центром по умолчанию, и записывает его в файл testCert.cer.
Следующая команда создает сертификат, выданный тестовым корневым центром по умолчанию, и сохраняет его в хранилище сертификатов.
Следующая команда создает сертификат, выданный тестовым корневым центром по умолчанию, и сохраняет его в хранилище сертификатов. Сертификат явным образом помещается в хранилище currentuser.
Следующая команда создает тестовый сертификат и записывает его в файл textXYZ.cer, используя указанный контейнер ключей субъекта и имя его сертификата, соответствующее стандарту X.500.
Следующая команда создает сертификат, выданный тестовым корневым центром по умолчанию, создает PVK-файл и записывает сертификат в хранилище и в этот файл.
Следующая команда создает сертификат, выданный тестовым корневым центром по умолчанию, создает контейнер ключей и записывает сертификат в хранилище и в этот файл.
Следующая команда создает самозаверяющий сертификат, задает имя субъекта "CN=XYZ Company", задает начало и окончание срока действия, помещает ключ в хранилище my, задает ключ обмена и помечает закрытый ключ как экспортируемый.
Следующая команда создает самозаверяющий сертификат, который может использоваться для тестирования веб-приложения, которое использует протокол SSL (Secure Sockets Layer) на веб-сервере, URL-адрес которого является www.example.com. OID, определяемый параметром –eku, идентифицирует этот сертификат как сертификат сервера SSL. Сертификат хранится в хранилище my и доступен на уровне компьютера (а не пользователя). Закрытый ключ сертификата можно экспортировать и сертификат действителен с 10 мая 2010 до 22 декабря 2011 года.
Следующие команды создают сертификаты и помещают их в хранилища. Первая команда создает сертификат, используя тестовый корневой центр по умолчанию, и сохраняет сертификат в хранилище. Вторая команда создает еще один сертификат, используя только что созданный сертификат, и сохраняет второй сертификат в другом хранилище.
Следующие команды создают сертификаты и помещают их в хранилища. Первая команда сохраняет сертификат в хранилище my. Вторая команда создает еще один сертификат, используя только что созданный сертификат. Поскольку в хранилище my имеется более одного сертификата, вторая команда идентифицирует первый сертификат с помощью его общего имени.