Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сбой развертывания приложения может быть вызван сбоем проверки цифровой подписи пакета приложения. Узнайте, как распознать эти ошибки и что делать с ними.
При развертывании упаковаемого приложения Windows Windows всегда пытается проверить цифровую подпись в пакете приложения. Сбои при проверке подписей блокируют развертывание пакета. Почему пакет не прошёл проверку, может быть неочевидно. В частности, если вы подписываете пакеты частными сертификатами для локального тестирования, достаточно часто необходимо также управлять доверием к этим сертификатам. Неправильная конфигурация доверия сертификатов может привести к сбоям проверки подписи.
Что нужно знать
Технологии
Необходимые условия
- журнал событий Windows для диагностики сбоев установки.
- задачи Certutil для управления сертификатами для работы с хранилищем сертификатов при устранении неполадок
Инструкции
Шаг 1. Изучение журналов событий для диагностических сведений
В зависимости от того, как вы попытались развернуть приложение, возможно, не получили значимый код ошибки для сбоя развертывания. В этом случае код ошибки обычно можно получить непосредственно из журналов событий.
Получение кода ошибки из журналов событий
Запустите eventvwr.msc.
Перейдите в средства просмотра событий (локально)>журналы приложений и служб>Microsoft>Windows.
Первый журнал, который следует проверить, — это AppxPackagingOM>Microsoft-Windows-AppxPackaging/Operational.
Ошибки, связанные с развертыванием, записываются в AppXDeployment-Server>Microsoft-Windows-AppXDeploymentServer/Operational.
Для ошибок развертывания найдите последнее событие ошибки 404. Это событие ошибки предоставляет код ошибки и описание причины сбоя развертывания. Если событие ошибки 465 предшествовало событию 404, возникла проблема с открытием пакета.
Если ошибка 465 не произошла, ознакомьтесь с общими рекомендациями по устранению неполадок упаковки, развертывания и запросов приложений Windows. В противном случае ознакомьтесь с этой таблицей для распространенных кодов ошибок, которые могут отображаться в строке ошибки для события ошибки 465:
Код ошибки | Ошибка | Описание | Предложение |
---|---|---|---|
0x80073CF0 | ОШИБКА_УСТАНОВКИ_НЕ_УДАЛОСЬ_ОТКРЫТЬ_ПАКЕТ | Не удалось открыть пакет приложения. | Эта ошибка обычно указывает на проблему с пакетом. Необходимо создать и подписать пакет еще раз. Дополнительные сведения см. в разделе Использование упаковывателя приложений. |
0x80080205 | APPX_E_INVALID_BLOCKMAP | Пакет приложения был изменен или имеет недопустимую карту блоков. | Пакет поврежден. Необходимо создать и подписать пакет снова. Дополнительные сведения см. в разделе Using App Packager. |
0x800B0004 | TRUST_E_SUBJECT_NOT_TRUSTED | Пакет приложения был изменен. | Содержимое пакета больше не соответствует цифровой подписи. Необходимо снова подписать пакет. Дополнительные сведения см. в разделе Как подписать пакет приложения с помощью SignTool. |
0x800B0100 | TRUST_E_NOSIGNATURE | Пакет приложения не подписан. | Можно развернуть только подписанные пакеты приложений Windows. Сведения о подписании пакета приложения см. в разделе Как подписать пакет приложения с помощью signTool. |
0x800B0109 | CERT_E_UNTRUSTED_ROOT (СЕРТИФИКАТ_ОШИБКА_НЕНАДЕЖНЫЙ_КОРЕНЬ) | Цепочка сертификатов, используемая для подписывания пакета приложения, заканчивается корневым сертификатом, который не является доверенным. | Перейдите к шагу 2, чтобы устранить проблемы с доверием к сертификату. |
0x800B010A | CERT_E_CHAINING | Цепочка сертификатов не может быть создана до доверенного корневого удостоверяющего центра на основе сертификата, который использовался для подписи пакета приложения. | Перейдите к шагу 2, чтобы устранить проблемы с доверием к сертификату. |
Шаг 2. Определение цепочки сертификатов, используемой для подписи пакета приложения
Чтобы выяснить сертификаты, которым должен доверять локальный компьютер, можно проверить цепочку сертификатов для цифровой подписи в пакете приложения.
Определение цепочки сертификатов
- В Проводнике щелкните правой кнопкой мыши пакет приложения и выберите Свойства.
- В диалоговом окне "Свойства " выберите вкладку цифровые подписи, которая также показывает, можно ли проверить подпись.
- В списке подписей выберите подпись, а затем нажмите кнопку Подробности.
- В диалоговом окне сведения о цифровой подписи нажмите кнопку Просмотреть сертификат.
- В диалоговом окне Сертификат выберите вкладку Путь сертификации.
Верхний сертификат в цепочке — корневой сертификат, а нижний — сертификат подписи. Если только один сертификат находится в цепочке, сертификат подписи также является собственным корневым сертификатом. Вы можете определить серийный номер для каждого сертификата, который вы затем используете с Certutil.
Определение серийного номера для каждого сертификата
- В области пути сертификации выберите сертификат и щелкните Просмотреть сертификат.
- В диалоговом окне "Сертификат" выберите вкладку сведения, в которой отображается серийный номер и другие полезные свойства сертификата.
Шаг 3. Определение сертификатов, доверенных локальным компьютером
Чтобы развернуть пакет приложения, он должен быть не только доверенным в контексте пользователя, но и в контексте локального компьютера. В результате при просмотре на вкладке "Цифровые подписи" на предыдущем шаге цифровая подпись может казаться допустимой, но при проверке во время развертывания пакета приложения всё равно дает сбой.
Чтобы определить, является ли цепочка сертификатов, используемая для подписывания пакета приложения, в частности доверенным локальным компьютером
Выполните следующую команду:
CertUtil.exe -store Root rootCertSerialNumber
Выполните следующую команду:
CertUtil.exe -store TrustedPeople signingCertSerialNumber
Если серийный номер сертификата не указан, Certutil перечисляет все сертификаты, доверенные локальным компьютером для этого хранилища.
Пакет может не установиться из-за ошибок цепочки сертификатов, даже если сертификат для подписи не является самоподписанным, а корневой сертификат находится в корневом хранилище локального компьютера. В этом случае может возникнуть проблема с доверием для промежуточных центров сертификации. Дополнительные сведения об этой проблеме см. в разделе "Работа с сертификатами".
Замечания
Если вы определили, что пакет не удалось развернуть, так как сертификат подписи не является доверенным, не устанавливайте пакет, если вы не знаете его происхождения и не доверяете ему.
Если вы хотите вручную доверять приложению для установки (например, чтобы установить собственный пакет приложения, подписанный тестовой подписью), вы можете вручную добавить сертификат в хранилище доверенных сертификатов локального компьютера.
Чтобы вручную добавить сертификат в хранилище доверенных сертификатов локального компьютера
- В проводнике щелкните правой кнопкой мыши пакет приложения и в всплывающем контекстном меню выберите пункт Свойства.
- В диалоговом окне "Свойства " выберите вкладку "Цифровые подписи".
- В списке подписей выберите подпись, а затем нажмите кнопку сведений.
- В диалоговом окне сведения о цифровой подписи нажмите кнопку Просмотреть сертификат.
- В диалоговом окне сертификата нажмите кнопку Установить сертификат....
- В мастере импорта сертификатов выберите Локальный компьютер и затем нажмите Далее. Вам потребуется предоставить права администратора для продолжения.
- Выберите Поместить все сертификаты в следующее хранилище и перейдите к хранилищу Доверенных Людей.
- Нажмите кнопку Далее, а затем нажмите кнопку Готово, чтобы завершить работу мастера.
После того как вы вручную добавили этот сертификат, вы увидите, что теперь он является доверенным в диалоговом окне сертификатов .
Сертификат можно удалить после того, как он больше не нужен.
Удаление сертификата
Запустите Cmd.exe от имени администратора.
В командной строке администратора выполните следующую команду:
Certutil -store TrustedPeople
Найдите серийный номер установленного сертификата. Это число является идентификатором сертификата.
Выполните следующую команду:
Certutil -delStore TrustedPeople certID
Мы рекомендуем избегать ручного добавления корневых сертификатов в хранилище сертификатов доверенных корневых центров сертификации на локальном компьютере . Наличие нескольких приложений, подписанных сертификатами, которые восходят к тому же корневому сертификату, например, корпоративными приложениями, может быть более эффективным, чем установка отдельных сертификатов в хранилище доверенных лиц. Хранилище доверенных людей содержит сертификаты, которые считаются доверенными по умолчанию, поэтому не проверяются более высокими центрами или списками доверия сертификатов или цепочками. Рекомендации по добавлению сертификатов в хранилище сертификатов доверенных корневых центров сертификации см. в разделе Code-Signing "Лучшие практики".
Вопросы безопасности
Добавив сертификат в хранилища сертификатов локального компьютера ,, вы влияете на уровень доверия сертификатов всех пользователей на компьютере. Рекомендуется установить все сертификаты подписывания кода, которые требуется для тестирования пакетов приложений в хранилище сертификатов доверенных людей. Немедленно удалите эти сертификаты, если они больше не нужны, чтобы предотвратить их использование для компрометации доверия системы. Если вы создаете собственные тестовые сертификаты для подписывания пакетов приложений, мы также рекомендуем ограничить привилегии, связанные с тестируемым сертификатом. Сведения о создании тестовых сертификатов для подписывания пакетов приложений см. в статье Создание сертификата подписи пакета приложения.
Связанные разделы
-
примеры
-
Основные понятия
-
устранение неполадок, связанных с упаковкой, развертыванием и запросом приложений Windows