Compartir vía


Firma de una aplicación móvil

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

Para firmar y aprovisionar una aplicación móvil para sistemas operativos Android o Apple, debe administrar certificados de firma y perfiles de aprovisionamiento de Apple. En este artículo se describe cómo administrar de forma segura certificados y perfiles para firmar y aprovisionar la aplicación en Azure Pipelines.

Nota:

Necesita al menos un agente para ejecutar una compilación o versión. Puede usar un agente de compilación de Linux, macOS o Windows hospedado por Microsoft o configurar su propio agente. Para obtener más información, consulte Agentes de compilación y versión.

Firmar la aplicación Android

Siga estos pasos para firmar la aplicación Android y mantener seguro el certificado de firma.

Carga del archivo de almacén de claves

  1. Obtenga un archivo de almacén de claves que contenga el certificado de firma. En la documentación de Android se describe el proceso de generación de un archivo de almacén de claves y su clave correspondiente.

  2. En Azure Pipelines, vaya a Bibliotecas>Archivos seguros. Seleccione + Archivo seguro y cargue el archivo de almacén de claves en la biblioteca de archivos seguros. Durante la carga, el almacén de claves se cifra y almacena de forma segura.

Adición de la tarea de firma a la canalización

Agregue la tarea AndroidSigning@3 a la canalización YAML después del paso que compila la aplicación. En la tarea AndroidSigning@3:

  • <apkFiles> es obligatorio y es la ruta de acceso y los nombres de los archivos APK que se van a firmar. El valor predeterminado es **/*.apk.
  • <apksign> debe ser true, que es el valor predeterminado.
  • <keystore-file> es el nombre del archivo de almacén de claves cargado en la biblioteca de archivos seguros.
  • <apksignerKeystorePassword> es la contraseña del archivo de almacén de claves sin cifrar.
  • <apksignerKeystoreAlias> es el alias de clave para el certificado de firma.
  • <apksignerKeyPassword> es la contraseña de la clave asociada al alias especificado.

Puede establecer y usar variables en YAML, o bien puede establecer las variables mediante la pestaña Variables de la interfaz de usuario de Azure Pipelines y hacer referencia a ellas en YAML.

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

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)

Cualquier agente de compilación ahora puede firmar de forma segura la aplicación sin tener que administrar los certificados en la propia máquina de compilación.

Firma de la aplicación Apple iOS, macOS, tvOS o watchOS

Para firmar y aprovisionar la aplicación, su compilación Xcode o Xamarin.iOS necesita acceder al certificado de firma P12 y a uno o varios perfiles de aprovisionamiento. En los pasos siguientes se explica cómo obtener estos archivos.

Obtención del certificado de firma P12

  1. Exporte el certificado de firma de desarrollo o distribución a un archivo .p12 mediante Xcode o la aplicación Keychain Access en macOS.

    • Para exportar mediante Xcode:

      1. Vaya a Xcode>Preferencias>Cuentas.

      2. En la columna izquierda, seleccione el ID de Apple.

      3. En el lado derecho, seleccione su cuenta personal o de equipo y seleccione Administrar certificados.

      4. Ctrl+Seleccione el certificado que desea exportar y seleccione Exportar certificado en el menú.

        Captura de pantalla de la exportación de un certificado mediante Xcode.

      5. En el cuadro de diálogo, escriba el nombre del certificado, la ubicación para guardar el archivo y una contraseña para proteger el certificado.

    • O bien, use el procedimiento descrito en Firma de iOS para seguir un proceso similar mediante la aplicación Keychain Access en macOS o genere un certificado de firma en Windows.

  2. Cargue el archivo P12 en la biblioteca de archivos seguros de Azure Pipelines. Durante la carga, el certificado se cifra y almacena de forma segura.

  3. En la canalización, vaya a la pestaña Variables y agregue una variable denominada P12password con la contraseña del certificado como valor. Asegúrese de seleccionar el icono de bloqueo para proteger la contraseña y ocultarla en los registros.

Obtención del perfil de aprovisionamiento

Si su aplicación no usa la firma automática, puede descargar el perfil de aprovisionamiento de la aplicación desde el portal para desarrolladores de Apple. Para obtener más información, consulte Edición, descarga o eliminación de perfiles de aprovisionamiento.

También puede usar Xcode para acceder a los perfiles de aprovisionamiento instalados en el equipo Mac. En Xcode, vaya a Xcode>Preferencias>Cuentas. Seleccione el ID de Apple y el equipo y, a continuación, seleccione Descargar perfiles manuales.

En Azure Pipelines, cargue el perfil de aprovisionamiento en la biblioteca de archivos seguros. Durante la carga, el archivo se cifra y almacena de forma segura.

Adición de las tareas de firma y aprovisionamiento a la canalización

Para firmar y aprovisionar la aplicación, puede instalar el certificado y el perfil durante cada compilación o preinstalar los archivos en un agente de compilación de macOS.

Instalación del certificado y el perfil durante cada compilación

Instale el certificado y el perfil durante cada compilación cuando no tenga acceso duradero al agente de compilación, por ejemplo, cuando se usan agentes macOS hospedados. El certificado P12 y el perfil de aprovisionamiento se instalan al principio de la compilación y se quitan cuando finaliza esta.

  • Agregue la tarea InstallAppleCertificate@2 a la canalización YAML antes de la tarea Xcode o Xamarin.iOS. En el código, reemplace <secure-file.p12> por el nombre del archivo .p12 cargado. Use la variable para el P12password seguro.

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

    Nota:

    En la tarea InstallAppleCertificate@2, el parámetro deleteCert tiene como valor predeterminado true, que quita el certificado después de la compilación.

  • Agregue la tarea InstallAppleProvisioningProfile@1 en YAML antes de la tarea Xcode o Xamarin.iOS. Reemplace <secure-file.mobileprovision> por el nombre del archivo de perfil de aprovisionamiento.

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

    Nota:

    En la tarea InstallAppleProvisioningProfile@1, el parámetro removeProfile tiene como valor predeterminado true, que quita el perfil después de la compilación.

Cualquier agente de compilación ahora puede firmar de forma segura la aplicación sin tener que administrar ningún certificado o perfil en la propia máquina de compilación.

Preinstalación del certificado y el perfil en un agente de compilación de macOS

En lugar de instalar el certificado de firma y los perfiles de aprovisionamiento durante la compilación, puede preinstalarlos en un agente de compilación de macOS. Después, los archivos están disponibles para su uso continuado por las compilaciones. Use este método solo cuando confíe en las personas y procesos que tienen acceso a la cadena de claves de macOS en la máquina del agente.

Preinstalación del certificado P12

  1. Para instalar el certificado P12 en la cadena de claves predeterminada, ejecute el siguiente comando desde una ventana de terminal de macOS en el agente de compilación. Reemplace <certificate.p12> por la ruta y el nombre del archivo P12. Reemplace <password> por la contraseña de cifrado del archivo P12.

    sudo security import <certificate.p12> -P <password>
    
  2. Agregue una nueva variable a la canalización denominada KEYCHAIN_PWD. Establezca el valor como contraseña en la cadena de claves predeterminada, que normalmente es la contraseña del usuario que inicia el agente. Asegúrese de seleccionar el icono de bloqueo para proteger esta contraseña.

Preinstalación del perfil de aprovisionamiento

  1. Busque el nombre completo de la identidad de firma abriendo una ventana de terminal macOS y escribiendo security find-identity -v -p codesigning. Verá una lista de identidades de firma con el formato iPhone Developer/Distribution: Developer Name (ID). Si una identidad no es válida, verá algo parecido a (CSSMERR_TP_CERT_REVOKED) después de la identidad.

  2. Para instalar el perfil de aprovisionamiento en la maquina del agente, ejecute el siguiente comando desde una ventana de terminal de macOS. Reemplace <profile> por la ruta de acceso al archivo de perfil de aprovisionamiento y reemplace <UUID> por el UUID del perfil de aprovisionamiento, que es el nombre de archivo del perfil de aprovisionamiento sin la extensión .mobileprovision.

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

Adición de tareas de firma y aprovisionamiento que usan la cadena de claves predeterminada

  • Agregue la tarea InstallAppleCertificate@2 a la canalización YAML antes de la tarea Xcode o Xamarin.iOS. En el código, establezca los valores siguientes:

    • certSecureFile: el nombre del archivo .p12 cargado.
    • certPwd: variable para el P12password seguro.
    • signingIdentity: nombre completo de la identidad de firma.
    • keychain: default, para permitir el acceso a la cadena de claves predeterminada.
    • keychainPassword: la variable KEYCHAIN_PWD.
    • deleteCert: false, para conservar el certificado entre compilaciones.
    - task: InstallAppleCertificate@2
      inputs:
        certSecureFile: '<secure-file.p12>'
        certPwd: '$(P12password)'
        signingIdentity: <full-signing-identity>
        keychain: default
        keychainPassword: `$(KEYCHAIN_PWD)
        deleteCert: false
    
  • Agregue la tarea InstallAppleProvisioningProfile@1. En el código:

    • Establezca provProfileSecureFile con el nombre del archivo de perfil de aprovisionamiento.
    • Establezca removeProfile en false para que el perfil se conserve entre compilaciones.
    - task: InstallAppleProvisioningProfile@1
        inputs:
          provProfileSecureFile: '<secure-file.mobileprovision>'
          removeProfile: false
    

El agente de compilación de macOS ahora puede firmar y aprovisionar la aplicación de forma segura para todas las compilaciones sin necesidad de administrar certificados ni perfiles.

Referencia a los archivos seguros en la tarea de compilación de Xcode o Xamarin.iOS

Para usar el certificado seguro y el perfil en las canalizaciones, configure las siguientes opciones en las tareas de compilación de Xcode o Xamarin.iOS.

Las referencias a archivos seguros de las tareas de compilación usan variables para signingIdentity y provisioningProfileUuid. Estas variables se establecen automáticamente mediante las tareas Instalar certificado de Apple e Instalar perfil de aprovisionamiento de Apple para el certificado y el perfil de aprovisionamiento seleccionados.

Para Xcode:

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

Para Xamarin.iOS:

- task: XamariniOS@2
    inputs:
      solutionFile: '**/*.iOS.csproj'
      signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
      signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'

El agente de compilación de canalización ahora firma y aprovisiona la aplicación sin necesidad de administrar certificados ni perfiles en el propio equipo de compilación.

Para más información acerca de: