Assinar pacotes com o Azure Key Vault
No Visual Studio 2022, versão 17.8 versão preliminar 2 e posteriores, você pode assinar pacotes de aplicativos da UWP e de área de trabalho com um certificado do Azure Key Vault. Essa ferramenta envia o resumo (hash) do pacote do aplicativo ao Azure Key Vault para assinatura criptográfica com o certificado escolhido. O resumo assinado é então retornado e anexado ao seu pacote localmente.
Importante
Esse processo é seguro. A chave privada do certificado nunca sai do Azure Key Vault.
Pré-requisitos
- Uma conta do Azure. Caso ainda não tenha uma conta do Azure, inicie aqui.
- Um Azure Key Vault. Para obter mais informações, confira Criar um Key Vault.
- Um certificado de assinatura de pacote válido importado para o Azure Key Vault. O certificado padrão gerado pelo Azure Key Vault não funcionará para a assinatura de código. Para obter detalhes sobre como criar um certificado de assinatura de pacote, confira Criar um certificado para assinatura de pacote.
Importar um certificado para o Key Vault
Adicionar um certificado ao Key Vault é muito simples. Neste exemplo, adicionamos um certificado de assinatura de código UWP válido chamado UwpSigningCert.pfx.
- Na página de propriedades do Key Vault, selecione Certificados.
- Clique em Gerar/Importar.
- Na tela Criar um certificado, escolha os seguintes valores:
- Método de Criação de Certificado: Importação.
- Nome do certificado: UwpSigningCert
- Carregar arquivo de certificado: UwpSigningCert.pfx
- Descriptografar certificado: se o seu certificado estiver protegido por senha, forneça-a no campo Senha.
- Clique em Criar.
Observação
Esse certificado autoassinado não será aceito como confiável pelo Windows, a menos que tenha sido importado e aceito como confiável por um administrador. Mantenha todos os certificados seguros, incluindo os autoassinados.
Configurar as políticas de acesso para o Key Vault
Você poderá controlar quem tem acesso ao conteúdo do Key Vault usando as políticas de acesso. As políticas de acesso ao Key Vault concedem permissões separadamente a chaves, segredos e certificados. Você pode conceder a um usuário o acesso apenas às chaves e não aos segredos. As permissões de acesso para chaves, segredos e certificados são gerenciadas no nível do cofre. Para obter mais informações, confira Segurança do Azure Key Vault.
Observação
Quando você cria um Key Vault em uma assinatura do Azure, ele é automaticamente associado ao locatário do Azure Active Directory da assinatura. Qualquer pessoa que tentar gerenciar ou recuperar conteúdo de um Key Vault deverá ser autenticada pelo Azure AD.
- Nas páginas de propriedades do Key Vault, selecione Políticas da acesso.
- Selecione + Adicionar política de acesso.
- Clique na lista suspensa Permissões de Certificado e marque as caixas Obter e Lista em Operações do Certificate Management.
- Clique na lista suspensa Permissões do Segredo e marque as caixas Obter e Lista em Operações de Gerenciamento de Segredos.
- Clique em Selecionar entidade de segurança, procure o usuário cujo acesso você está permitindo e clique em Selecionar.
- Clique em Adicionar.
- Não se esqueça de salvar as alterações clicando em Salvar.
Observação
Permitir acesso direto a um cofre de chaves aos usuários não é recomendável. O ideal é que os usuários sejam adicionados a um grupo do Azure AD, que, por sua vez, recebe acesso ao cofre de chaves.
Selecionar um certificado do Key Vault no Visual Studio
O assistente Criar pacotes do aplicativo no Visual Studio permite que você escolha o certificado que será usado para assinar o pacote do aplicativo. Você poderá escolher o certificado de assinatura do pacote por meio do Azure Key Vault. Você deverá fornecer o URI do Key Vault que contém o certificado e a conta Microsoft autenticada no Visual Studio deverá ter as permissões corretas para acessá-lo.
- Abra o projeto do aplicativo UWP ou o desktop do projeto de empacotamento de aplicativo do Windows no Visual Studio.
- Selecione Publicar ->Pacote ->Criar pacotes de aplicativos... para abrir o assistente Criar Pacotes de Aplicativos.
- Na página Selecionar método de distribuição, selecione Sideload.
- Na página Selecionar método de assinatura, clique em Selecionar do Azure Key Vault....
- Depois que a caixa de diálogo Selecionar um certificado do Azure Key Vault for exibida, use o seletor de conta a fim de escolher a conta para a qual você configurou uma política de acesso.
- Insira o URI do Key Vault. O URI pode ser encontrado na página Visão geral do Key Vault e é identificado pelo Nome DNS.
- Clique no botão Exibir metadados.
- Depois que o carregamento dos certificados tiver terminado, selecione o certificado desejado na lista (por exemplo, UwpSigningCert).
- Clique em OK.
Descriptografar o certificado com uma senha do Azure Key Vault
Se você estiver usando um certificado local protegido por senha (.pfx) para assinar o pacote do aplicativo, poderá ser difícil gerenciar a senha usada para descriptografá-lo. Ao importar o certificado por meio do assistente Criar pacotes do aplicativo, será solicitado que você insira a senha manualmente. Como alternativa, há a opção de escolher a senha do Azure Key Vault.
- Abra o projeto do aplicativo UWP ou o desktop do projeto de empacotamento de aplicativo do Windows no Visual Studio.
- Selecione Publicar ->Pacote ->Criar pacotes de aplicativos... para abrir o assistente Criar Pacotes de Aplicativos.
- Na página Selecionar método de distribuição, selecione Sideload.
- Na página Selecionar método de assinatura, clique em Selecionar do arquivo...
- Depois que a caixa de diálogo Certificado protegido por senha for exibida, clique em Selecione senha do Key Vault.
- Depois que a caixa de diálogo Selecionar senha do Azure Key Vault for exibida, use o seletor de conta a fim de escolher a conta para a qual você configurou uma política de acesso.
- Insira o URI do Key Vault. O URI pode ser encontrado na página Visão geral do Key Vault e é identificado pelo Nome DNS.
- Clique no botão Exibir metadados.
- Depois que o carregamento das senhas tiver terminado, selecione a senha desejada na lista (por exemplo, UwpSigningCertPassword).
- Clique em OK.
Permitir a assinatura em cenários de CI/CD
Para permitir a assinatura em cenários de CI/CD, você precisa configurar seu pipeline para usar o DefaultAzureCredential para autenticar com o Azure Key Vault. O DefaultAzureCredential tentará usar a identidade do agente de pipeline para acessar o Key Vault se ele tiver as permissões adequadas. Como alternativa, você pode especificar uma entidade de serviço ou uma identidade gerenciada a ser usada para autenticação.