Assinar um pacote do MSIX com a autenticação do Device Guard

Importante

Microsoft Store para Empresas e Microsoft Store para Educação serão desativados no primeiro trimestre de 2023. Você pode continuar a usar os recursos atuais de aplicativos gratuitos até esse momento. Para obter mais informações sobre essa alteração, consulte Evoluindo o Microsoft Store para Empresas e a Educação

Importante

O Serviço de Assinatura do Device Guard v2 (DGSS v2) já está disponível.

Maio de 2021 – O mecanismo baseado na Web existente para o serviço de Assinatura do Device Guard v1 será desativado em 9 de junho de 2021. Faça a transição para a versão baseada no PowerShell do serviço (DGSS v2). Um pacote NuGet que contém os componentes DGSS v2 necessários e a documentação de migração está disponível. Leia os Termos de Uso da Microsoft incluídos no pacote NuGet; observe que o uso do DGSS implica na aceitação desses termos. Para perguntas, entre em contato conosco DGSSMigration@microsoft.com.

Observação

Depois de baixar microsoft.acs/dgss.client.nupkg, você pode renomear para .zip e extrair conteúdo para arquivos e documentação e informações adicionais

A assinatura do Device Guard é um recurso do Device Guard que está disponível no Microsoft Store para Empresas e no Education. Ele permite que as empresas garantam que cada aplicativo venha de uma fonte confiável. Você pode usar o SignTool no SDK do Windows e o DGSSv2 dlib no pacote NuGet para assinar seus aplicativos MSIX com a assinatura do Device Guard. Esse suporte a recursos permite que você incorpore facilmente a entrada do Device Guard no fluxo de trabalho de assinatura e compilação de pacotes MSIX.

A assinatura do Device Guard requer permissões no Microsoft Store para Empresas e usa a autenticação Azure Active Directory (AD). Para assinar um pacote MSIX com assinatura do Device Guard, siga estas etapas.

  1. Se você ainda não fez isso, inscreva-se para Microsoft Store para Empresas ou Microsoft Store para Educação.

    Observação

    Você só precisa usar este portal para configurar permissões para assinatura do Device Guard.

  2. No Microsoft Store para Empresas (ou ou Microsoft Store para Educação), atribua a si mesmo uma função com permissões necessárias para executar a assinatura do Device Guard.
  3. Registre seu aplicativo no portal do Azure com as configurações adequadas para que você possa usar Azure AD autenticação com o Microsoft Store para Empresas.
  4. Obtenha um token de acesso Azure AD no formato JSON.
  5. Execute o SignTool para assinar seu pacote MSIX com a assinatura do Device Guard e passe o token de acesso Azure AD obtido na etapa anterior.

As seções a seguir descrevem essas etapas com mais detalhes.

Configurar permissões para assinatura do Device Guard

Para usar a assinatura do Device Guard no Microsoft Store para Empresas ou Microsoft Store para Educação, você precisa da função de signatário do Device Guard. Essa é a função de privilégio menor que tem a capacidade de assinar. Outras funções, como administrador global e proprietário da conta de cobrança , também podem assinar.

Observação

A função Do Signatário do Device Guard é usada quando você está assinando como um aplicativo. O Administrador Global e o Proprietário da Conta de Cobrança são usados quando você entra como uma pessoa conectada.

Para confirmar ou reatribuir funções:

  1. Entre no Microsoft Store para empresas.
  2. Selecione Gerenciar e selecione Permissões.
  3. Exibir Funções.

Para obter mais informações, consulte Funções e permissões na Microsoft Store para Empresas e Educação.

Registrar seu aplicativo no Portal do Azure

Para registrar seu aplicativo com as configurações adequadas para que você possa usar Azure AD autenticação com o Microsoft Store para Empresas:

  1. Navegue até https://portal.azure.com, e autentique-se como administrador global de locatário

  2. Navegue até o serviço Azure Active Directory do Azure.

  3. No menu do lado esquerdo, em Gerenciar, localize e selecione Registros de aplicativo

  4. Na barra de menus, selecione Novo registro

  5. No campo Nome , insira DGSSv2.

    Observação

    O campo Nome é usado para facilitar a identificação do registro do aplicativo no portal do Azure. Qualquer nome desejado pode ser usado. Para essa demonstração, usamos o DGSSv2 simplesmente para facilitar a identificação.

  6. Em tipos de conta com suporte , selecione a configuração apropriada.

    • Contas somente neste diretório da organização (locatário único) – essa opção é recomendada, a menos que você tenha uma necessidade específica de uma implantação multilocatário. Todas as contas de usuário e de convidado em seu diretório podem usar o aplicativo ou a API.
    • Contas em qualquer diretório organizacional (qualquer diretório Azure AD – Multilocatário) – essa opção é melhor para uma organização que tem vários locatários Azure AD, mas só precisa de um único ponto de confiança para assinatura de código. Todos os usuários com uma conta corporativa ou de estudante da Microsoft podem usar seu aplicativo ou API. Isso inclui as escolas e as empresas que usam o Office 365.
    • Contas em qualquer diretório organizacional (qualquer diretório Azure AD – Multilocatário) e contas pessoais da Microsoft (por exemplo, Skype, Xbox) – essa opção não é recomendada devido a estar aberta para uso por contas microsoft de nível de consumidor. Todos os usuários com uma conta Microsoft corporativa, de estudante ou pessoal podem usar o aplicativo ou a API. Ele inclui escolas e empresas que usam Office 365, bem como contas pessoais que são usadas para entrar em serviços como Xbox e Skype.
    • Somente contas pessoais da Microsoft – como a última opção, essa opção também não é recomendada. Isso não é apenas porque permite contas pessoais, mas porque essa opção dá suporte apenas a contas pessoais. Azure AD contas são explicitamente bloqueadas. Contas pessoais usadas para entrar em serviços como Xbox e Skype
  7. Na lista suspensa do URI de Redirecionamento , selecione Cliente público/nativo (área de trabalho móvel & ) no menu de seleção suspensa. Insira https://dgss.microsoft.com na caixa de texto.

  8. Clique em Registrar

  9. No canto superior direito da página, localize as URIs de Redirecionamento rotuladas de entrada. Selecione a linha abaixo rotulada como 0 web, 0 spa, 1 cliente público

  10. Localize a entrada rotulada Permitir fluxos de cliente público na seção Configurações avançadas. Defina esse valor como Sim

  11. Clique em Salvar na parte superior da página

  12. No menu esquerdo, selecione permissões de API

  13. Na barra de menus, selecione Adicionar uma permissão. No menu de submenu, selecione as APIs que minha organização usa. Na caixa de pesquisa, insira Windows Store para Empresas

Observação

Se Windows Store for Business não aparecer na lista, abra uma nova guia do navegador e navegue para https://businessstore.microsoft.com entrar como administrador global do locatário. Feche a guia do navegador e pesquise novamente.

  1. Selecione Windows Store para Empresas e, em seguida, selecione Permissões delegadas. Verifique user_impersonation.
  2. Clique em Adicionar permissões na parte inferior da página. No menu esquerdo, selecione Visão geral para retornar à visão geral do registro do aplicativo DGSSv2.

Obter um token de acesso do Azure AD

Em seguida, obtenha um token de acesso Azure AD para seu aplicativo Azure AD no formato JSON. Você pode fazer isso usando uma variedade de linguagens de programação e script. Para obter mais informações sobre esse processo, consulte Autorizar o acesso a aplicativos Web Azure Active Directory usando o fluxo de concessão de código OAuth 2.0. Recomendamos que você recupere um token de atualização junto com o token de acesso, pois o token de acesso expirará em uma hora.

Observação

Se Windows Store for Business não aparecer na lista, abra uma nova guia do navegador e navegue para https://businessstore.microsoft.com entrar como administrador global do locatário. Feche a guia do navegador e pesquise novamente.

O exemplo do PowerShell a seguir demonstra como solicitar um token de acesso.

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
}

Observação

Recomendamos que você salve seu arquivo JSON para uso posterior.

Obter a DLL de Assinatura do Device Guard versão 2

Para assinar com o Device Guard Signing versão 2, obtenha a Microsoft.Acs.Dlib.dll baixando o pacote NuGet que será usado para assinar seu pacote. Isso também é necessário para obter o certificado raiz.

Assinar seu pacote

Depois de ter seu token de acesso Azure AD, você estará pronto para usar o SignTool para assinar seu pacote com a assinatura do Device Guard. Para obter mais informações sobre como usar o SignTool para assinar pacotes, consulte Assinar um pacote de aplicativo usando SignTool.

O exemplo de linha de comando a seguir demonstra como assinar um pacote com a assinatura do Device Guard versão 2.

signtool sign /fd sha256 /dlib Microsoft.Acs.Dlib.dll /dmdf <Azure AAD in .json format> /t <timestamp-service-url> <your .msix package>

Observação

  • Os certificados gerados para a assinatura do Device Guard v2 são válidos por um dia. Recomendamos que você use uma das opções de carimbo de data/hora ao assinar seu pacote. Se você não aplicar um carimbo de data/hora, a assinatura expirará em um dia e o aplicativo precisará ser resignado.
  • Verifique se o nome do editor no manifesto do pacote corresponde ao certificado que você está usando para assinar o pacote. Com esse recurso, ele será seu certificado folha. Por exemplo, se o certificado folha for CompanyName, o nome do editor no manifesto deverá ser CN=CompanyName. Caso contrário, a operação de assinatura falhará.
  • Há suporte apenas para o algoritmo SHA256.
  • Quando você assina seu pacote com a assinatura do Device Guard, seu pacote não está sendo enviado pela Internet.

Teste

Para testar, baixe o certificado raiz clicando aqui ou baixando o pacote NuGet e obtendo-o com o comando:

Get-RootCertificate

Instale o certificado raiz nas Autoridades de Certificação Raiz Confiáveis em seu dispositivo. Instale seu aplicativo recém-assinado para verificar se você assinou seu aplicativo com êxito com a assinatura do Device Guard.

Importante

Para obter isolamento, implante a política de CI do WDAC para confiar em aplicativos assinados com o DGSSv2. Leia a documentação readme_cmdlets e a migração da documentação DGSSv1 para dGSSv2 incluída no pacote NuGet.

Erros comuns

Aqui estão erros comuns que você pode encontrar.

  • 0x800700d: Esse erro comum significa que o formato do arquivo JSON Azure AD é inválido.
  • Talvez seja necessário aceitar os termos e condições de Microsoft Store para Empresas antes de baixar o certificado raiz da Assinatura do Device Guard. Isso pode ser feito adquirindo um aplicativo gratuito no portal.