Создание временного сертификата для использования во время разработки

Что такое MakeCert


MakeCert - инструмент для создания сертификатов X.509, которые предназначены исключительно для тестирования разрабатываемого приложения. Этот инструмент создает пару ключей(открытый и закрытый) для цифровой подписи и помещает её в файл сертификата!!!

MakeCert входит в состав пакета Windows SDK, который можно скачать с http://go.microsoft.com/fwlink/p/?linkid=84091. Если вам не хочется устанавливать целый пакет разработчика, то вот ссылка на сам файл.

Создание временного сертификата


MakeCert - это консольное приложение. Для работы с ним необходимо запустить командную строку(от имени Администратора) и ввести команду запуска приложения с указанными параметрами: makecert [options] outputCertificateFile, где outputCertificateFile - имя файла с расширением .cer, в который будет записан тестовый сертификат X.509, options - параметры создания сертификата.
Описание параметров приведено на сайте MSDN по этой ссылке.

Пример вызова makecert.exe: makecert -sk XYZ -n "CN=XYZ Company" testXYZ.cer

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

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


Выполняем в командной строке:
makecert -n "CN=TempCert" -r -sv TempCert.pvk TempCert.cer
Создание самозаверяющего сертификата
  • -n (subjectName) - задает имя субъекта. Согласно правилам, к имени субъекта добавляется префикс "CN = " для "Common Name";
  • -r - указывает, что сертификат самозаверяющий;
  • -sv (privateKeyFile) - указывает файл, содержащий контейнер закрытого ключа. То есть закрытый ключ будет храниться не в сертификате, а в файле. Он нам еще пригодится.
Самозаверяющий сертификат - это сертификат подписанный приложением, которое создало его, в нашем случает MakeCert'ом.

При выполнении данной команды, MakeCert попросит ввести пароль на закрытый ключ сертификата:
Создание пароля закрытого ключа
Пароль не забываем, он тоже еще пригодится!

Создание нового сертификата, подписанного сертификатом корневого центра


Выполняем в командной строке:
makecert -sk SignedByTempCert -iv TempCert.pvk -n "CN=SignedByTempCert" -ic TempCert.cer SignedByTempCert.cer -sr currentuser -ss My
Создание временного сертификата
  • -sk (subjectKey) - расположение контейнера ключей субъекта, содержащего закрытый ключ. Если контейнер ключей не существует, он будет создан. Если ни один из параметров (-sk и sv) не используется, контейнер ключей с именем JoeSoft создается по умолчанию. Проще говоря, это имя контейнера, в котором будет хранится закрытый ключ временного сертификата;
  • -n (subjectName) - задает имя субъекта. Согласно правилам, к имени субъекта добавляется префикс "CN = " для "Common Name";
  • -iv (issuerKeyFile) - задает файл закрытого ключа издателя. В нашем случае это TempCert.pvk (см. выше);
  • -ic (issuerCertFile) - задает расположение сертификата издателя.
При выполнении данной команды, MakeCert попросит ввести пароль на закрытый ключ самозаверяющего сертификата:
Ввод пароля закрытого ключа
Параметрами -sr currentuser -ss My мы указали, что сертификат нужно поместить в хранилище текущего пользователя в раздел Личное.

Проверка сертификата в оснастке Сертификаты


Запускаем оснастку Certificates и переходим в раздел личное текущего пользователя:
Сертификат в хранилище сертификатов
Открываем созданный сертификат, он должен иметь ссылку на закрытый ключ:
Созданный сертификат
Созданным сертификатом можно создавать электронную подпись на основе алгоритма RSA. Вычисления хэш-суммы исходного сообщения будет производится по алгоритму SHA1.

P.S. Самозаверяющий сертификат обязательно должен быть помещен в доверенные корневые сертификаты, иначе сертификат будет считаться не валидным. Для этого открываем файл TempCert.cer и устанавливаем сертификат с помощью мастера установки, или же производим установку через оснастку Сертификаты.

Комментарии