Создание сертификата для подписи пакета приложения
Важно!
MakeCert.exe не рекомендуется. Текущие рекомендации по созданию сертификата см. в статье "Создание сертификата для подписи пакета".
Узнайте, как использовать MakeCert.exe и Pvk2Pfx.exe для создания сертификата подписи тестового кода, чтобы подписать пакеты приложений Windows.
Перед их развертыванием необходимо подписать упакованные приложения Windows. Если вы не используете Microsoft Visual Studio 2012 для создания и подписывания пакетов приложений, необходимо создать собственные сертификаты подписи кода и управлять ими. Сертификаты можно создавать с помощью MakeCert.exe и Pvk2Pfx.exe из комплекта драйверов Windows (WDK). Затем можно использовать сертификаты для подписывания пакетов приложений, чтобы их можно было развернуть локально для тестирования.
Это важно знать
Технологии
Необходимые компоненты
- средства MakeCert.exe и Pvk2Pfx.exe из WDK
Instructions
Шаг 1. Определение имени издателя пакета
Чтобы создать сертификат подписи с помощью пакета приложения, который вы хотите подписать, имя субъекта сертификата подписи должно соответствовать атрибуту Publisher элемента Identity в AppxManifest.xml для этого приложения. Например, предположим, что AppxManifest.xml содержит:
<Identity Name="Contoso.AssetTracker"
Version="1.0.0.0"
Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>
Для параметра publisherName, указанного с помощью служебной программы MakeCert на следующем шаге, используйте команду CN=Contoso Software, O=Contoso Corporation, C=US.
Примечание.
Эта строка параметра указана в кавычках и учитывает регистр и пробелы.
Строка атрибута Publisher, определенная для элемента Identity в AppxManifest.xml, должна совпадать со строкой, указанной с параметром MakeCert /n для имени субъекта сертификата. Скопируйте и вставьте строку по возможности.
Шаг 2. Создание закрытого ключа с помощью MakeCert.exe
Используйте служебную программу MakeCert для создания самозаверяющего сертификата и закрытого ключа:
MakeCert /n publisherName /r /h 0 /eku "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13" /e <expirationDate> /sv MyKey.pvk MyKey.cer
Эта команда задает пароль для PVK-файла. Рекомендуется выбрать надежный пароль и сохранить закрытый ключ в безопасном расположении.
Мы рекомендуем использовать предлагаемые параметры в предыдущем примере по следующим причинам:
-
/R
-
Создает самозаверяющий корневой сертификат. Это упрощает управление для тестового сертификата.
-
/h 0
-
Помечает основное ограничение для сертификата как конечной сущности. Это предотвращает использование сертификата в качестве центра сертификации (ЦС), который может выдавать другие сертификаты.
-
/Eku
-
Задает значения расширенного использования ключей (EKU) для сертификата.
Примечание.
Не помещайте пробел между двумя значениями с разделителями-запятыми.
- 1.3.6.1.5.5.7.3.3 указывает, что сертификат действителен для подписи кода. Всегда указывайте это значение, чтобы ограничить предполагаемое использование сертификата.
- 1.3.6.1.4.1.311.10.3.13 указывает, что сертификат учитывает подписывание времени существования. Как правило, если сигнатура сигнатура имеет метку времени, если сертификат был действителен в момент отметки времени, подпись остается допустимой, даже если срок действия сертификата истекает. Этот EKU заставляет подпись истекать независимо от того, является ли подпись меткой времени.
-
/E
-
Задает дату окончания срока действия сертификата. Укажите значение параметра expirationDate в формате мм/дд/гггг. Рекомендуется выбрать дату окончания срока действия только до тех пор, пока это необходимо для целей тестирования, как правило, меньше года. Эта дата окончания срока действия в сочетании с EKU подписывания времени существования может помочь ограничить окно, в котором сертификат может быть скомпрометирован и неправильно использован.
Дополнительные сведения о других параметрах см. в разделе MakeCert.
Шаг 3. Создание файла обмена персональными данными (PFX) с помощью Pvk2Pfx.exe
Используйте служебную программу Pvk2Pfx для преобразования PVK-файлов и .cer файлов, созданных MakeCert в PFX-файл, который можно использовать с SignTool для подписи пакета приложения:
Pvk2Pfx /pvk MyKey.pvk /pi pvkPassword /spc MyKey.cer /pfx MyKey.pfx [/po pfxPassword]
Файлы MyKey.pvk и MyKey.cer являются теми же файлами, которые MakeCert.exe созданы на предыдущем шаге. Используя необязательный параметр /po, можно указать другой пароль для результирующего PFX-файла; в противном случае PFX имеет тот же пароль, что и MyKey.pvk.
Дополнительные сведения о других параметрах см. в разделе Pvk2Pfx.
Замечания
После создания PFX-файла можно использовать файл с SignTool для подписывания пакета приложения. Дополнительные сведения см. в разделе "Как подписать пакет приложения с помощью SignTool". Но сертификат по-прежнему не доверяется локальному компьютеру для развертывания пакетов приложений, пока он не будет установлен в хранилище доверенных сертификатов локального компьютера. Вы можете использовать Certutil.exe, которая поставляется с Windows.
Установка сертификатов с помощью WindowsCertutil.exe
Запустите Cmd.exe от имени администратора.
Выполните следующую команду:
Certutil -addStore TrustedPeople MyKey.cer
Рекомендуется удалить сертификаты, если они больше не используются. В той же командной строке администратора выполните следующую команду:
Certutil -delStore TrustedPeople certID
Идентификатор сертификата — это серийный номер сертификата. Выполните следующую команду, чтобы определить серийный номер сертификата:
Certutil -store TrustedPeople
Соображения безопасности
Добавив сертификат в хранилища сертификатов локального компьютера, вы влияете на доверие сертификатов всех пользователей на компьютере. Рекомендуется установить все сертификаты подписывания кода, которые требуется протестировать пакеты приложений в надежном хранилище сертификатов Люди. Немедленно удалите эти сертификаты, если они больше не нужны, чтобы предотвратить их использование для компрометации доверия системы.
См. также
-
Примеры
-
Основные понятия