Подписывание пакета MSIX с помощью подписи Device Guard
Внимание
Microsoft Store для бизнеса и Microsoft Store для образования были сняты в отставку в первом квартале 2023 года. Дополнительные сведения об этом изменении см. в статье "Развитие Microsoft Store для бизнеса и образования".
Вы можете продолжать использовать текущие возможности Службы подписи Device Guard версии 2 (DGSS) до этого момента. DGSS будет заменена службой подписывания кода Azure (ACS) и будет поддерживать политику управления приложениями Защитника Windows (WDAC) и подписывание файлов каталога.
Служба подписывания Device Guard версии 2 (DGSS) — это служба подписывания кода, которая поставляется с существующей учетной записью клиента Microsoft Store для бизнеса и образования. DGSS можно использовать для подписывания бизнес-приложений, файлов каталога и политик управления приложениями в Защитнике Windows (WDAC). Это позволяет предприятиям гарантировать, что каждое приложение поступает из надежного источника. Вы можете использовать SignTool в пакете NuGet с пакетом Sdk для Windows и DGSSv2 dlib для подписывания приложений MSIX с помощью подписи Device Guard. Эта функция позволяет легко включить вход Device Guard в рабочий процесс сборки и подписывания пакетов MSIX.
Доступен пакет NuGet, содержащий необходимые компоненты DGSS версии 2 и документацию по миграции. Ознакомьтесь с условиями использования Майкрософт, включенными в пакет NuGet; обратите внимание, что использование DGSS подразумевает принятие этих условий. Для любых вопросов обратитесь к нам по адресу DGSSMigration@microsoft.com.
Примечание.
Скачав microsoft.acs/dgss.client.nupkg, можно переименовать в .zip и извлечь содержимое для файлов и дополнительных сведений
Для подписывания Device Guard требуются разрешения в Microsoft Store для бизнеса и проверка подлинности Azure Active Directory (AD). Чтобы подписать пакет MSIX с помощью подписи Device Guard, выполните следующие действия.
- В Microsoft Store для бизнеса (или Microsoft Store для образования) назначьте себе роль с разрешениями, необходимыми для подписи Device Guard.
Примечание.
Эту страницу необходимо использовать только для настройки разрешений для подписи Device Guard.
- Зарегистрируйте приложение в портал Azure с соответствующими параметрами, чтобы использовать проверку подлинности Azure AD с Microsoft Store для бизнеса.
- Получение маркера доступа Azure AD в формате JSON.
- Запустите SignTool, чтобы подписать пакет MSIX с помощью подписи Device Guard и передать маркер доступа Azure AD, полученный на предыдущем шаге.
В следующих разделах подробно описаны эти действия.
Настройка разрешений для подписи Device Guard
Чтобы использовать вход Device Guard в Microsoft Store для бизнеса или Microsoft Store для образования, требуется роль подписи Device Guard. Это наименее привилегированная роль, которая имеет возможность подписывать. Другие роли, такие как глобальный администратор и владелец учетной записи выставления счетов, также могут подписаться.
Примечание.
Роль signer Device Guard используется при подписи в качестве приложения. Глобальный администратор и владелец учетной записи выставления счетов используется при входе в систему.
Чтобы подтвердить или переназначить роли, выполните приведенные ниже действия.
- Войдите в Microsoft Store для бизнеса.
- Выберите "Управление" и выберите "Разрешения".
- Просмотр ролей.
Дополнительные сведения см. в разделе "Роли и разрешения" в Microsoft Store для бизнеса и образовании.
Регистрация приложения на портале Azure
Чтобы зарегистрировать приложение с соответствующими параметрами, чтобы использовать проверку подлинности Azure AD с помощью Microsoft Store для бизнеса:
Перейдите к разделу https://portal.azure.comи выполните проверку подлинности в качестве глобального администратора клиента
Перейдите к службе Azure Active Directory .
В меню слева в разделе "Управление" найдите и выберите Регистрация приложений
В строке меню выберите "Создать регистрацию"
В поле "Имя" введите DGSSv2.
Примечание.
Поле "Имя" используется для простой идентификации регистрации приложения в портал Azure. Любое нужное имя можно использовать. Для этой демонстрации мы используем DGSSv2, чтобы упростить идентификацию.
В разделе "Поддерживаемые типы учетных записей " выберите соответствующий параметр.
- Учетные записи в этом каталоге организации (только один клиент) — этот параметр рекомендуется, если вам не требуется многотенантное развертывание. Все учетные записи пользователей и гостевые учетные записи в вашем каталоге могут использовать ваше приложение или API.
- Учетные записи в любом каталоге организации (любой каталог Azure AD — Мультитенант) — этот вариант лучше всего подходит для организации с несколькими клиентами Azure AD, но для подписывания кода требуется только одна точка доверия. Все пользователи с рабочей или учебной учетной записью корпорации Майкрософт могут использовать приложение или API. Сюда относятся учебные заведения и предприятия, которые используют Office 365.
- Учетные записи в любом каталоге организации (любой каталог Azure AD — Мультитенант) и личных учетных записей Майкрософт (например, Skype, Xbox) — этот параметр не рекомендуется из-за того, что он открыт для использования учетными записями Майкрософт уровня потребителей. Все пользователи с рабочей, учебной или личной учетной записью Майкрософт могут использовать ваше приложение или API. Он включает школы и предприятия, использующие Office 365, а также личная учетная запись, которые используются для входа в такие службы, как Xbox и Skype.
- Только личные учетные записи Майкрософт— как и последний вариант, этот параметр также не рекомендуется. Это не только потому, что это позволяет личная учетная запись, но так как этот параметр поддерживает только личная учетная запись. Учетные записи Azure AD явно блокируются. Личные учетные записи, используемые для входа в такие службы, как Xbox и Skype
В раскрывающемся списке URI перенаправления выберите общедоступный клиент или собственный (мобильный и настольный компьютер) в раскрывающемся меню. Введите
https://dgss.microsoft.com
в текстовое поле.Щелкните Зарегистрировать.
В правом верхнем углу страницы найдите URI перенаправления с меткой записи. Выберите строку под ней с меткой 0 web, 0 spa, 1 общедоступный клиент
Найдите записи с меткой "Разрешить общедоступные потоки клиентов" в разделе "Дополнительные параметры". Задайте для этого значения значение "Да"
Нажмите кнопку " Сохранить " в верхней части страницы
В меню слева выберите разрешения API
В строке меню выберите "Добавить разрешение". В всплывающем меню выберите API, которые моя организация использует вкладку. В поле поиска введите Магазин Windows для бизнеса
Примечание.
Если Магазин Windows для бизнеса не отображается в списке, откройте новую вкладку браузера и перейдите к https://businessstore.microsoft.com ней в качестве глобального администратора клиента. Закройте вкладку браузера, а затем снова выполните поиск.
- Выберите Магазин Windows для бизнеса и выберите делегированные разрешения. Проверьте user_impersonation.
- Нажмите кнопку "Добавить разрешения" в нижней части страницы . В меню слева выберите Обзор , чтобы вернуться к обзору регистрации приложений DGSSv2.
Получение маркера доступа Azure AD
Затем получите маркер доступа Azure AD для приложения Azure AD в формате JSON. Это можно сделать с помощью различных языков программирования и сценариев. Дополнительные сведения об этом процессе см. в статье "Авторизация доступа к веб-приложениям Azure Active Directory" с помощью потока предоставления кода OAuth 2.0. Рекомендуется получить маркер обновления вместе с маркером доступа, так как срок действия маркера доступа истекает через час.
Примечание.
Если Магазин Windows для бизнеса не отображается в списке, откройте новую вкладку браузера и перейдите к https://businessstore.microsoft.com ней в качестве глобального администратора клиента. Закройте вкладку браузера, а затем снова выполните поиск.
В следующем примере PowerShell показано, как запросить маркер доступа.
function GetToken()
{
$c = Get-Credential -Credential $user
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $c.UserName, $c.password
$user = $Credentials.UserName
$password = $Credentials.GetNetworkCredential().Password
$tokenCache = "outfile.json"
#replace <application-id> and <client_secret-id> with the Application ID from your Azure AD application registration
$Body = @{
'grant_type' = 'password'
'client_id'= '<application-id>'
'client_secret' = '<client_secret>'
'resource' = 'https://onestore.microsoft.com'
'username' = $user
'password' = $password
}
$webpage = Invoke-WebRequest 'https://login.microsoftonline.com/common/oauth2/token' -Method 'POST' -Body $Body -UseBasicParsing
$webpage.Content | Out-File $tokenCache -Encoding ascii
}
Примечание.
Рекомендуется сохранить JSON-файл для последующего использования.
Получение библиотеки DLL для подписи Device Guard версии 2
Чтобы подписаться с помощью Device Guard Sign версии 2, получите Microsoft.Acs.Dlib.dll , скачав пакет NuGet, который будет использоваться для подписи пакета. Это также необходимо для получения корневого сертификата.
Подписыв пакет
После получения маркера доступа Azure AD вы можете использовать SignTool для подписывания пакета с помощью Device Guard. Дополнительные сведения об использовании SignTool для подписывания пакетов см. в разделе "Подпись пакета приложения" с помощью SignTool.
В следующем примере командной строки показано, как подписать пакет с помощью Device Guard подписи версии 2.
signtool sign /fd sha256 /dlib Microsoft.Acs.Dlib.dll /dmdf <Azure AAD in .json format> /t <timestamp-service-url> <your .msix package>
Примечание.
- Сертификаты, созданные для подписи Device Guard версии 2, действительны в течение одного дня. Рекомендуется использовать один из вариантов метки времени при подписи пакета. Если метка времени не применяется, срок действия подписи истекает в один день, и приложению потребуется уйти в отставку.
- Убедитесь, что имя издателя в манифесте пакета соответствует сертификату, который вы используете для подписи пакета. С помощью этой функции это будет ваш конечный сертификат. Например, если конечный сертификат — CompanyName, то имя издателя в манифесте должно быть CN=CompanyName. В противном случае операция подписывания завершится ошибкой.
- Поддерживается только алгоритм SHA256.
- Когда вы подписываете пакет с помощью подписи Device Guard, ваш пакет не отправляется через Интернет.
Тест
Чтобы проверить, скачайте корневой сертификат, щелкнув здесь или скачайте пакет NuGet и получите его с помощью команды:
Get-RootCertificate
Установите корневой сертификат в доверенные корневые центры сертификации на устройстве. Установите новое подписанное приложение, чтобы убедиться, что приложение успешно подписано с помощью подписи Device Guard.
Внимание
Чтобы обеспечить изоляцию, разверните политику CI WDAC для доверия приложений, подписанных с помощью DGSSv2. Обязательно прочитайте документацию по readme_cmdlets и миграцию из DGSSv1 в документацию DGSSv2, включенную в пакет NuGet.
Распространенные ошибки
Ниже приведены распространенные ошибки, которые могут возникнуть.
- 0x800700d. Эта распространенная ошибка означает, что недопустимый формат JSON-файла Azure AD.
- Перед скачиванием корневого сертификата Device Guard для подписывания Device Guard может потребоваться принять условия Microsoft Store для бизнеса. Это можно сделать, получив бесплатное приложение на портале.