Compartilhar via


Assinatura de aplicativo móvel

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Este artigo descreve como o Azure Pipelines gerencia com segurança certificados e perfis para assinatura e provisionamento de aplicativos móveis. Para assinar e provisionar um aplicativo móvel, os pipelines devem fornecer certificados de assinatura para sistemas operacionais Android ou Apple e perfis de provisionamento para a Apple.

Assinatura do aplicativo Android

O processo a seguir assina um aplicativo Android mantendo o certificado de autenticação seguro.

Obter o arquivo do repositório de chaves

Siga a documentação do Android para gerar um arquivo de repositório de chaves e sua chave correspondente. O arquivo do repositório de chaves contém o certificado de autenticação.

Em Bibliotecas>Arquivos seguros das Pipelines do Azure, selecione + Arquivo seguro e carregue o arquivo de keystore na biblioteca de arquivos seguros. Durante o upload, o repositório de chaves é criptografado e armazenado com segurança.

Adicionar a tarefa de assinatura ao pipeline

No pipeline YAML de um aplicativo Android, defina as seguintes variáveis: keystore-password, key-alias e key-password. Como alternativa, você pode definir as variáveis usando a interface do usuário de variáveis do pipeline.

variables:
  keystore-password: <keystore file password>
  key-alias: <key alias for the signing certificater>
  key-password: <password for the key associated with the alias>

Adicione a tarefa AndroidSigning@3 ao pipeline após a etapa de build. Na tarefa AndroidSigning@3:

  • <apkFiles> é o caminho e nome obrigatórios dos arquivos APK para assinatura. O valor padrão é **/*.apk.
  • <apksign> precisa ser true, que é o padrão.
  • <apksignerKeystoreFile> é o nome do arquivo de repositório de chaves transferido por carregamento na biblioteca de arquivos seguros.
  • <apksignerKeystorePassword> é a senha para o arquivo de repositório de chaves não criptografado.
  • <apksignerKeystoreAlias> é o alias de chave para o certificado de autenticação.
  • <apksignerKeyPassword> é a senha da chave associada ao alias especificado.
steps:
- task: AndroidSigning@3
  displayName: 'Signing and aligning APK file(s) **/*.apk'
  inputs:
    apkFiles: '**/*.apk'
    apksign: true
    apksignerKeystoreFile: <keystore-filename.keystore>
    apksignerKeystorePassword: $(keystore-password)
    apksignerKeystoreAlias: $(key-alias)
    apksignerKeyPassword: $(key-password)

Qualquer agente de build agora pode assinar o aplicativo com segurança sem qualquer gerenciamento de certificado no próprio computador de build.

Assinatura de aplicativo do Apple iOS, macOS, tvOS ou watchOS

Para assinar e provisionar um aplicativo Apple, o build do Xcode precisa de acesso ao certificado de assinatura P12 e a um ou mais perfis de provisionamento.

Obter o certificado de assinatura P12

Exporte seu certificado de assinatura de desenvolvimento ou distribuição para um arquivo .p12 usando o Xcode ou o aplicativo keychain Access no macOS. Para exportar usando o Xcode:

  1. Vá para Xcode>Preferências>Contas.

  2. Na coluna da esquerda, selecione seu ID Apple.

  3. No lado direito, selecione sua conta pessoal ou de equipe e selecione Gerenciar certificados.

  4. Ctrl+Selecione o certificado que você deseja exportar e selecione Exportar certificado no menu.

    Captura de tela da exportação de um certificado usando o Xcode.

  5. Insira o nome do certificado, um local para salvar o arquivo e uma senha para proteger o certificado.

Para exportar usando o aplicativo Keychain Access no macOS ou para gerar um certificado de assinatura no Windows, use o procedimento descrito na Assinatura do iOS.

Carregar o arquivo P12 e adicionar a variável de senha

Emarquivos seguros das > de Pipelines do Azure, selecione + Arquivo seguro e carregue o arquivo P12 na biblioteca de arquivos seguros do Azure Pipelines. Durante o upload, o certificado é criptografado e armazenado com segurança.

Na interface do usuário variáveis do pipeline de build do aplicativo, adicione uma variável chamada P12password com a senha do certificado como o valor. Selecione o ícone de bloqueio para proteger a senha e obscurecê-la nos logs.

Obter o perfil de provisionamento

Se o aplicativo não usar a assinatura automática, baixe o perfil de provisionamento de aplicativos no portal do Desenvolvedor da Apple. Para obter mais informações, consulte Editar, baixar ou excluir perfis de provisionamento.

Você também pode usar o Xcode para acessar perfis que estão instalados no seu Mac. No Xcode, vá para Xcode>Preferências>Contas. Selecione sua ID da Apple e sua equipe e selecione Baixar Perfis Manuais.

No Azure Pipelines, carregue o perfil de provisionamento na biblioteca de arquivos seguros. Durante o upload, o arquivo é criptografado e armazenado com segurança.

Adicionar tarefas de assinatura e provisionamento ao pipeline

Você precisa de pelo menos um computador agente para executar um pipeline de build ou lançamento do Azure Pipelines. Você pode usar agentes hospedados pela Microsoft ou configurar agentes auto-hospedados. Para obter mais informações, confira Agentes do Azure Pipelines.

Para assinatura e provisionamento de aplicativos da Apple em agentes macOS hospedados, ou se não desejar permitir o acesso ao chaveiro do agente, você pode instalar o certificado e os perfis necessários durante cada build. Se você usar um agente auto-hospedado e confiar nas pessoas e processos que podem acessar o conjunto de chaves do agente, você poderá pré-instalar o certificado e os perfis no agente de build do macOS.

Instalar o certificado e o perfil durante cada build

Se você não tiver acesso duradouro ao agente de build, por exemplo, ao usar agentes hospedados pela Microsoft, poderá instalar o certificado e o perfil durante cada build. O pipeline instala o certificado P12 e o perfil de provisionamento no início de cada build e os remove quando o build é concluído.

No pipeline de build do YAML para o aplicativo, adicione a tarefa InstallAppleCertificate@2 antes da tarefa Xcode@5 . No código, substitua <secure-file.p12> pelo nome do arquivo .p12 carregado. Para certPwd, use a variável segura P12password que você criou.

- task: InstallAppleCertificate@2
    inputs:
      certSecureFile: '<secure-file.p12>'
      certPwd: '$(<P12password>)'

Adicione também a tarefa InstallAppleProvisioningProfile@1 ao pipeline antes da tarefa Xcode@5 . Substitua <secure-file.mobileprovision> pelo nome do arquivo de perfil de provisionamento.

- task: InstallAppleProvisioningProfile@1
    inputs:
      provProfileSecureFile: '<secure-file.mobileprovision>'

Observação

Nas tarefas InstallAppleCertificate@2 e InstallAppleProvisioningProfile@1, o parâmetro removeProfile padrão é true, o que remove o certificado e o perfil após cada build.

Qualquer agente de build agora pode assinar o aplicativo com segurança sem precisar de nenhum certificado ou gerenciamento de perfil no próprio computador de build.

Pré-instalar o certificado e o perfil em um agente de build do macOS

Como alternativa, você pode pré-instalar os perfis de certificado digital de assinatura e provisionamento em agentes de build do macOS auto-hospedados para uso contínuo em compilações. Use esse método somente quando você confiar nas pessoas e processos que têm acesso ao conjunto de chaves macOS nos computadores do agente.

Adicionar a variável de senha do conjunto de chaves ao pipeline

Adicione uma nova variável ao pipeline de build chamado KEYCHAIN_PWD. Defina o valor como a senha de conjunto de chaves do macOS padrão, que normalmente é a senha do usuário que inicia o agente. Selecione o ícone de bloqueio para proteger essa senha.

Instalar o certificado P12 no agente

Para instalar o certificado P12 no conjunto de chaves padrão, execute o comando a seguir em uma janela do Terminal do macOS no computador do agente. Substitua <certificate.p12> pelo caminho e pelo nome do arquivo P12 e substitua <password> pela senha de criptografia do arquivo P12.

sudo security import <certificate.p12> -P <password>

Instalar o perfil de provisionamento no agente

Localize o nome completo da identidade de assinatura inserindo security find-identity -v -p codesigning em uma janela do Terminal do macOS. Você verá uma lista de identidades de assinatura no formulário iPhone Developer/Distribution: Developer Name (ID). Se uma identidade for inválida, você verá algo semelhante a (CSSMERR_TP_CERT_REVOKED) após a identidade.

Para instalar o perfil de provisionamento no agente, execute o comando a seguir na janela do Terminal do macOS. Substitua <profile> pelo caminho para o arquivo de perfil de provisionamento. Substitua <UUID> pela UUID do perfil de provisionamento, que é o nome do arquivo de perfil de provisionamento sem a .mobileprovision extensão.

sudo cp <profile> ~/Library/MobileDevice/Provisioning Profiles/<UUID>.mobileprovision

Adicionar tarefas de assinatura e provisionamento que usam o conjunto de chaves padrão

No pipeline de build do YAML, adicione a tarefa InstallAppleCertificate@2 antes da tarefa Xcode@5 . No código, defina os seguintes valores:

  • certSecureFile: o nome do arquivo uploaded .p12.
  • certPwd: a variável para o P12password seguro.
  • signingIdentity: o nome completo da sua identidade de assinatura.
  • keychain: default para permitir o acesso ao conjunto de chaves padrão.
  • keychainPassword: a variável KEYCHAIN_PWD.
  • deleteCert: false para manter o certificado entre compilações.
- task: InstallAppleCertificate@2
  inputs:
    certSecureFile: '<secure-file.p12>'
    certPwd: '$(P12password)'
    signingIdentity: <full-signing-identity>
    keychain: default
    keychainPassword: `$(KEYCHAIN_PWD)
    deleteCert: false

Adicione também a tarefa InstallAppleProvisioningProfile@1 antes da tarefa Xcode@5 . No código:

  • Defina provProfileSecureFile como o nome do arquivo de perfil de provisionamento.
  • Defina removeProfile para false manter o perfil entre compilações de software.
- task: InstallAppleProvisioningProfile@1
    inputs:
      provProfileSecureFile: '<secure-file.mobileprovision>'
      removeProfile: false

O agente de build do macOS agora pode assinar e provisionar com segurança o aplicativo para todos os builds sem necessidade de gerenciamento adicional de certificados ou perfis.

Configurar a tarefa de build do Xcode para fazer referência aos arquivos seguros

A tarefa de compilação Xcode (Xcode@5) refere-se ao signingIdentity e ao provisioningProfileUuid usando variáveis. Essas variáveis são definidas automaticamente para o perfil de provisionamento e certificado selecionado pelas tarefas anteriores instalar o certificado apple e instalar o perfil de provisionamento da Apple .

Adicione o seguinte código à tarefa Xcode build do pipeline (Xcode@5):

- task: Xcode@5
  inputs:
    signingOption: 'manual'
    signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
    provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'

O agente de build do pipeline agora assina e provisiona seu aplicativo com segurança, sem a necessidade de gerenciamento adicional de certificados ou perfis na máquina de build ou no pipeline.