Ошибка Signtool пакета приложения UWP: ошибка SignerSign (). (-2147024885 / 0x8007000b)

ИЗМЕНИТЬ

Ошибка журнала событий была следующей:

    error 0x8007000B: The app manifest publisher name (CN=...) 
must match the subject name of the signing certificate 
(CN={19BE29DF-4812-4F2E-8FC1-A138B146946A}).

Кажется, что приведенная ниже команда работает. Так что либо ошибка пользователя с моей стороны, которую я не могу идентифицировать, либо что-то непонятное с состоянием машины, когда я это видел. Этот идентификатор, связанный с сертификатом подписи в сообщении журнала событий, не совпадает с тем, что сертификат показывает в оснастке диспетчера сертификатов, что странно.

Исходный вопрос

Я пытаюсь подписать пакет приложения UWP, созданный с помощью MakeAppx.exe. Pfx - это сертификат подписи кода разработчика, созданный этими командами из https://msdn.microsoft.com/windows/uwp/porting/desktop-to-uwp-manual-conversion.

C:\> MakeCert.exe -r -h 0 -n "CN=<publisher_name>" -eku 1.3.6.1.5.5.7.3.3 -pe -sv <my.pvk> <my.cer>
C:\> pvk2pfx.exe -pvk <my.pvk> -spc <my.cer> -pfx <my.pfx>

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

Я использую следующую командную строку:

signtool.exe sign -f <path to my pfx file> -fd SHA256 -v .\FishTank.appx

но SignTool ошибается с этим:

The following certificate was selected:
    Issued to: ...
    Issued by: ...
    Expires:   Sat Dec 31 18:59:59 2039
    SHA1 hash: ...

Done Adding Additional Store
Error information: "Error: SignerSign() failed." (-2147024885/0x8007000b)

Издатель сертификата соответствует тому, что находится в appmanifest.xml.

<?xml version="1.0" encoding="utf-8"?>
<Package
   xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
   xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
   xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
  <Identity Name="..."
    ProcessorArchitecture="x64"
    Publisher="CN=..."
    Version="1.1.0.0" />
  <Properties>
    <DisplayName>Fish Tank</DisplayName>
    <PublisherDisplayName>Reserved</PublisherDisplayName>
    <Description>Some fish. Swimming around on your screen.</Description>
    <Logo>StoreLogo.png</Logo>
  </Properties>
  <Resources>
    <Resource Language="en-us" />
  </Resources>
  <Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14316.0" MaxVersionTested="10.0.14316.0" />
  </Dependencies>
  <Capabilities>
    <rescap:Capability Name="runFullTrust"/>
  </Capabilities>
  <Applications>
    <Application Id="FishTank" Executable="FishTank.exe" EntryPoint="Windows.FullTrustApplication">
      <uap:VisualElements
       BackgroundColor="#464646"
       DisplayName="Fish Tank"
       Square150x150Logo="Square150x150Logo.png"
       Square44x44Logo="Square44x44Logo.png"
       Description="Some fish. Swimming around on your screen." />
    </Application>
  </Applications>
</Package>

person dkackman    schedule 27.05.2016    source источник
comment
Эта ошибка специально упоминается в документацию. Вы забыли сообщить нам, что нашли в журнале приложений.   -  person Hans Passant    schedule 27.05.2016
comment
Ответ был отредактирован, чтобы иметь журнал событий, но, как ни странно (через пару часов вдали от компьютера), подпись просто работала, и я не менял ничего, что я мог придумать. Списывая это на мою собственную ошибку пользователя или гремлинов.   -  person dkackman    schedule 27.05.2016
comment
У меня была такая же ошибка, и проблема заключалась в имени издателя сертификата. Значение <publisher_name> в MakeCert.exe должно соответствовать Publisher="CN=<publisher_name>" в AppxManifest.xml   -  person crea7or    schedule 24.03.2017
comment
Только для поисковиков - у меня была эта ошибка после того, как она работала нормально в течение многих лет. На следующий день он снова заработал. Возможно, причиной был медленный интернет, ожидающие обновления Windows или брандмауэр Windows, но мы думаем, что это было подключение к Интернету.   -  person HockeyJ    schedule 24.04.2019


Ответы (2)


Точно так же, как ответил здесь (хотя для другого кода ошибки) - вы должны убедиться, что имя издателя (в AppxManifest .xml) совпадает с издателем сертификата.

Дополнительную информацию см. здесь (в нижнем разделе «Замечания»).

person Yoav Feuerstein    schedule 24.07.2017
comment
Что именно это значит? Это только CN = компания или вся тема? Что должно точно совпадать? Документы очень расплывчаты, и я не могу заставить работать любую комбинацию. - person Rick Strahl; 06.08.2017
comment
@RickStrahl из того, что я наблюдал, это должна быть вся строка, а не только часть CN = something. Если это все еще не сработало для вас, дайте мне знать - person Yoav Feuerstein; 07.08.2017

Аргумент MakeCert / n должен быть полной строкой Publisher из вашего xml.

person M1SMR    schedule 13.04.2018