Sigining UWP-Apps с настраиваемым сертификатом подписи кода

Что именно требуется для создания внутреннего приложения компании с помощью Xamarin.Forms UWP? Я могу скомпилировать пакет * .appxbundle, но никто не может установить его из-за ошибки сертификата. Если я попытаюсь использовать наш обычный сертификат подписи кода от StartSSL для подписи пакета, я получу следующую ошибку:

Конструктору манифеста не удалось импортировать сертификат.

Выбранный вами сертификат недействителен для подписи, так как срок его действия истек или возникла другая проблема. Для получения дополнительной информации см .: https://go.microsoft.com/fwlink/?LinkID=241478

Тот же сертификат используется другим нашим настольным приложением с signtool, поэтому я думаю, что с сертификатом все в порядке. Использование signtool для других сборок .NET, таких как проекты WPF:

"C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" sign /f "..\..\..\..\..\Finaltec\Framework\Signing.pfx" /p ... /tr "http://timestamp.globalsign.com/scripts/timestamp.dll" "$(TargetPath)"

Существуют ли какие-либо особые требования для подписи приложения UWP, чтобы любой мог его установить? Используемый сертификат - это сертификат подписи кода StartSSL класса 3, и он действителен до июня 2020 года. Если я попытаюсь установить приложение с сгенерированным тестовым сертификатом из Visual Studio, я получу сообщение о том, что корневой сертификат не является доверенным, и установка процесс будет отменен. Даже если я установлю руководство по сертификату до того, как получу ту же ошибку результата.

Информация о сертификате подписи кода:

  • Имя: CVA Computer - Visualisierung und Animation GmbH
  • Адрес: Beckebohnen 2.
  • Почтовый индекс, Город: 31618 Либенау
  • Штат, Страна: Niedersachsen, DE
  • Телефон: + 49-502398110
  • Электронная почта: [email protected]
  • Срок годности: 2017-04-14

Package.appxmanifest content:

<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
  <Identity Name="f736c883-f105-4d30-a719-4bf328872f5e" Publisher="CN=CVA Computer - Visualisierung und Animation GmbH" Version="1.0.1.0" />
  <mp:PhoneIdentity PhoneProductId="f736c883-f105-4d30-a719-4bf328872f5e" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
  <Properties>
    <DisplayName>CVA.COS_App</DisplayName>
    <PublisherDisplayName>CVA Computer - Visualisierung und Animation GmbH</PublisherDisplayName>
    <Logo>Assets\StoreLogo.png</Logo>
  </Properties>
  <Dependencies>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
  </Dependencies>
  <Resources>
    <Resource Language="x-generate" />
  </Resources>
  <Applications>
    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="FPCL.WIndows.App">
      <uap:VisualElements DisplayName="CVA.COS_App" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="CVA.COS_App" BackgroundColor="#f4f4f4">
        <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png">
        </uap:DefaultTile>
        <uap:SplashScreen Image="Assets\SplashScreen.png" />
        <uap:InitialRotationPreference>
          <uap:Rotation Preference="portrait" />
          <uap:Rotation Preference="landscape" />
          <uap:Rotation Preference="portraitFlipped" />
          <uap:Rotation Preference="landscapeFlipped" />
        </uap:InitialRotationPreference>
      </uap:VisualElements>
    </Application>
  </Applications>
  <Capabilities>
    <Capability Name="internetClient" />
    <Capability Name="privateNetworkClientServer" />
    <DeviceCapability Name="webcam" />
  </Capabilities>
</Package>

person Sebastian    schedule 01.11.2016    source источник


Ответы (1)


Если я попытаюсь использовать наш обычный сертификат подписи кода от StartSSL для подписи пакета, я получу следующую ошибку

Если мы хотим спеть приложение UWP, необходим сертификат подписи кода. Сертификат, который вы получили от StartSSL, используется для аутентификации клиента, вы можете проверить поле Enhanced Key Usage:

Доступный сертификат подписи кода:

введите здесь описание изображения

Сертификат от StartSSL:

введите здесь описание изображения

См. Также: Что особенного в сертификате подписи кода? и Введение в сертификаты

------ Обновление от 16.11.2016 ------

См. Раздел «Проверка сертификатов» по ​​адресу https://go.microsoft.com/fwlink/?LinkID=241478

Похоже, этот сертификат нарушает предложение, которое я выделил жирным шрифтом:

Проверяет значение свойства Enhanced Key Usage, которое должно содержать подпись кода, а также может содержать подпись за весь срок службы. Любые другие EKU запрещены.

На их снимке экрана (ниже) показаны расширенные ключи Codesignatur и Kernelmodus-Codesignatur.

скриншот

person Franklin Chen - MSFT    schedule 08.11.2016
comment
Используемый сертификат является сертификатом для подписи кода. См. Этот снимок экрана: puu.sh/scrNZ/f01ad0100b.png (Erweiterte Schlüsselverwendung означает расширенное использование ключа на английском языке, а Codesignatur означает Code Singing) - person Sebastian; 09.11.2016
comment
@ user2050176 Прошу кого-нибудь подтвердить подробности, обратите внимание на мой ответ, спасибо за понимание :) - person Franklin Chen - MSFT; 15.11.2016
comment
@Sebastian, пожалуйста, посмотрите мой обновленный ответ: Обновление от 16.11.2016 - person Franklin Chen - MSFT; 16.11.2016
comment
Значит, это означает, что наш сертификат запрещен из-за того, что также поддерживается подпись кода режима ядра? Что ж, я думаю, это называется очень неудачей, потому что мы не можем создать бизнес-сертификат без того, чтобы режим ядра не пел на StartCom: / - person Sebastian; 17.11.2016