Signieren einer mobilen App

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

Um eine mobile App für Android- oder Apple-Betriebssysteme zu signieren und bereitzustellen, müssen Sie Signaturzertifikate und Apple-Bereitstellungsprofile verwalten. In diesem Artikel wird beschrieben, wie Sie Zertifikate und Profile zum Signieren und Bereitstellen Ihrer App in Azure Pipelines sicher verwalten.

Hinweis

Sie benötigen mindestens einen Agent, um einen Build oder ein Release auszuführen. Sie können einen von Microsoft gehosteten Linux-, macOS- oder Windows-Build-Agent verwenden oder einen eigenen Agent einrichten. Weitere Informationen finden Sie unter Build- und Release-Agents.

Signieren Ihrer Android-App

Führen Sie die folgenden Schritte aus, um Ihre Android-App zu signieren und gleichzeitig die Sicherheit Ihres Signaturzertifikats aufrechtzuerhalten.

Hochladen der Keystoredatei

  1. Rufen Sie eine Keystoredatei ab, die Ihr Signaturzertifikat enthält. In der Android-Dokumentation wird der Prozess zum Generieren einer Keystore-Datei und des entsprechenden Schlüssels beschrieben.

  2. Wechseln Sie in Azure Pipelines zu Bibliotheken>Sichere Dateien. Wählen Sie +Sichere datei und laden Sie Ihre Keystoredatei in die Bibliothek für sichere Dateien hoch. Während des Uploads wird der Keystore verschlüsselt und sicher gespeichert.

Hinzufügen der Signieraufgabe zur Pipeline

Fügen Sie die AndroidSigning@3-Aufgabe ihrer YAML-Pipeline nach dem Schritt hinzu, in dem Ihre App erstellt wird. In der AndroidSigning@3-Aufgabe:

  • <apkFiles> sowie der Pfad und die Namen der zu signierenden APK-Dateien sind erforderlich. Der Standardwert ist **/*.apk.
  • <apksign> muss sein true sein. Dies ist die Standardeinstellung.
  • <keystore-file> ist der Name Ihrer hochgeladenen Keystoredatei in der Bibliothek für sichere Dateien.
  • <apksignerKeystorePassword> ist das Kennwort für die unverschlüsselte Keystore-Datei.
  • <apksignerKeystoreAlias> ist der Schlüsselalias für das Signaturzertifikat.
  • <apksignerKeyPassword> ist das Kennwort für den Schlüssel, der dem angegebenen Alias zugeordnet ist.

Sie können Variablen im YAML festlegen und verwenden. Sie können die Variablen auch mithilfe der Registerkarte Variablen in der Benutzeroberfläche von Azure Pipelines festlegen und darauf verweisen.

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)

Ihre App kann jetzt von jedem Build-Agent sicher ohne Zertifikatverwaltung auf dem Buildcomputer selbst signiert werden.

Signieren Ihrer Apple iOS-, macOS-, tvOS- oder watchOS-App

Zum Signieren und Bereitstellen Ihrer benötigt Ihr Xcode- oder Xamarin.iOS-Build Zugriff auf Ihr P12-Signaturzertifikat und mindestens ein Bereitstellungsprofil. In den nachfolgenden Schritten wird erläutert, wie diese Dateien abgerufen werden.

Abrufen Ihres P12-Signaturzertifikats

  1. Exportieren Sie Ihr Entwicklungs- oder Verteilungssignaturzertifikat entweder mit Xcode oder der Keychain Access-App unter macOS in eine .p12-Datei.

    • Exportieren mit Xcode:

      1. Wechseln Sie zu Xcode>Einstellungen>Konten.

      2. Wählen Sie in der linken Spalte Ihre Apple-ID aus.

      3. Wählen Sie auf der rechten Seite Ihr persönliches oder Teamkonto und dann Zertifikate verwalten aus.

      4. STRG+Wählen Sie das zu exportierende Zertifikat und dann Zertifikat exportieren im Menü aus.

        Screenshot des Zertifikatexports mit Xcode.

      5. Geben Sie im Dialogfeld den Zertifikatnamen, den Speicherort zum Speichern der Datei und ein Kennwort ein, um das Zertifikat zu sichern.

    • Oder verwenden Sie das unter iOS-Signieren beschriebene Verfahren, um einem ähnlichen Prozess mithilfe der Keychain Access-App unter macOS zu folgen oder ein Signaturzertifikat unter Windows zu generieren.

  2. Laden Sie die P12-Datei in die Bibliothek für sichere Dateien von Azure Pipeline hoch. Während des Uploads wird das Zertifikat verschlüsselt und sicher gespeichert.

  3. Wechseln Sie in Ihrer Pipeline zur Registerkarte Variablen, und fügen Sie eine Variable mit dem Namen "P12password mit Ihrem Zertifikatkennwort als Wert hinzu. Wählen Sie unbedingt das Sperrsymbol aus, um Ihr Kennwort zu sichern und in Protokollen zu verdecken.

Abrufen Ihres Bereitstellungsprofils

Wenn Ihre App das automatische Signieren nicht unterstützt, können Sie Ihr App-Bereitstellungsprofil aus dem Apple-Entwicklerportal herunterladen. Weitere Informationen finden Sie unter Bearbeiten, Herunterladen oder Löschen von Bereitstellungsprofilen.

Sie können auch Xcode verwenden, um auf die Bereitstellungsprofile zuzugreifen, die auf dem Mac installiert sind. Wechseln Sie in Xcode zu Xcode>Einstellungen>Konten. Wählen Sie Ihre Apple-ID und Ihr Team und dann Manuelle Profile herunterladen aus.

Laden Sie in Azure Pipelines das Bereitstellungsprofil in die Bibliothek für sichere Dateien hoch. Während des Uploads wird die Datei verschlüsselt und sicher gespeichert.

Hinzufügen der Signier- und Bereitstellungsaufgaben zur Pipeline

Um Ihre App zu signieren und bereitzustellen, können Sie entweder das Zertifikat und das Profil während jedes Builds installieren oder die Dateien auf einem macOS-Build-Agent vorinstallieren.

Installieren des Zertifikats und des Profils während der einzelnen Builds

Installieren Sie das Zertifikat und das Profil während jedes Builds, wenn Sie keinen dauerhaften Zugriff auf den Build-Agent haben, z. B. wenn Sie gehostete macOS-Agents verwenden. Das P12-Zertifikat und das Bereitstellungsprofil werden am Anfang des Buildprozesses installiert und nach Abschluss des Buildprozesses entfernt.

  • Fügen Sie der YAML-Pipeline vor der Xcode- oder Xamarin.iOS-Aufgabe die Aufgabe InstallAppleCertificate@2 hinzu. Ersetzen Sie im Code <secure-file.p12> durch den Namen der hochgeladenen .p12-Datei. Verwenden Sie die Variable für die sichere P12password.

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

    Hinweis

    In der InstallAppleCertificate@2 Aufgabe wird standardmäßig der deleteCert-Parameter verwendet true, der das Zertifikat nach dem Build entfernt.

  • Fügen Sie in YAML vor der Xcode- oder Xamarin.iOS-Aufgabe die Aufgabe InstallAppleProvisioningProfile@1 hinzu. Ersetzen Sie <secure-file.mobileprovision> mit dem Namen Ihrer Bereitstellungsprofildatei.

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

    Hinweis

    In der InstallAppleProvisioningProfile@1 Aufgabe wird standardmäßig der removeProfile-Parameter verwendet true, der das Profil nach dem Build entfernt.

Ihre App kann jetzt von jedem Build-Agent sicher ohne Zertifikat- oder Profilverwaltung auf dem Buildcomputer selbst signiert werden.

Vorabinstallation des Zertifikats und des Profils auf einem macOS-Build-Agent

Anstatt das Signaturzertifikat und die Bereitstellungsprofile während des Builds zu installieren, können Sie sie auf einem macOS-Build-Agent vorab installieren. Die Dateien stehen dann für die fortgesetzte Verwendung durch Builds zur Verfügung. Verwenden Sie diese Methode nur, wenn Sie den Personen und Prozessen vertrauen, die Zugriff auf die macOS-Keychain auf dem Agentcomputer haben.

Vorinstallieren des P12-Zertifikats

  1. Führen Sie den folgenden Befehl auf einem Build-Agent-Computer aus, um das P12-Zertifikat in der Standard-Keychain zu installieren. Ersetzen Sie <certificate.p12> durch den Pfad und den Namen Ihrer P12-Datei. Ersetzen Sie <password> durch das Verschlüsselungskennwort der P12-Datei.

    sudo security import <certificate.p12> -P <password>
    
  2. Fügen Sie ihrer Pipeline mit dem Namen KEYCHAIN_PWD eine neue Variable hinzu. Legen Sie den Wert als Kennwort auf den Standardschlüsselbund fest, bei dem es sich normalerweise um das Kennwort für den Benutzer handelt, der den Agent startet. Vergewissern Sie sich, dass Sie das Symbol Sperren auswählen, um dieses Kennwort zu schützen.

Vorinstallieren des Bereitstellungsprofils

  1. Suchen Sie den vollständigen Namen Ihrer Signaturidentität, indem Sie ein macOS-Terminalfenster öffnen und security find-identity -v -p codesigning eingeben. Es wird eine Liste der Signaturidentitäten im Format iPhone Developer/Distribution: Developer Name (ID) angezeigt. Wenn eine Identität ungültig ist, wird nach der Identität ein Hinweis wie der folgende angezeigt: (CSSMERR_TP_CERT_REVOKED).

  2. Führen Sie den folgenden Befehl in einem macOS-Terminalfenster des Build-Agent-Computers aus, um das Bereitstellungsprofil auf dem Agentcomputer zu installieren. Ersetzen Sie <profile> durch den Pfad zu Ihrer Bereitstellungsprofildatei, und ersetzen Sie <UUID> durch die UUID des Bereitstellungsprofils, bei dem es sich um den Dateinamen des Bereitstellungsprofils ohne die .mobileprovision-Erweiterung handelt.

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

Hinzufügen von Signatur- und Bereitstellungsaufgaben, die den Standardschlüsselbund verwenden

  • Fügen Sie der YAML-Pipeline vor der Xcode- oder Xamarin.iOS-Aufgabe die Aufgabe InstallAppleCertificate@2 hinzu. Legen Sie im Code die folgenden Werte fest:

    • certSecureFile: Der Name Ihrer hochgeladenen .p12-Datei.
    • certPwd: Die Variable für das sichere P12password.
    • signingIdentity: Der vollständige Name Ihrer Signaturidentität.
    • keychain: default, um den Zugriff auf den Standardschlüsselbund zuzulassen.
    • keychainPassword: Die KEYCHAIN_PWD-Variable.
    • deleteCert: false, um das Zertifikat zwischen den Builds beizubehalten.
    - task: InstallAppleCertificate@2
      inputs:
        certSecureFile: '<secure-file.p12>'
        certPwd: '$(P12password)'
        signingIdentity: <full-signing-identity>
        keychain: default
        keychainPassword: `$(KEYCHAIN_PWD)
        deleteCert: false
    
  • Fügen Sie die Aufgabe InstallAppleProvisioningProfile@1 hinzu. Im Code:

    • Legen Sie provProfileSecureFile auf den Namen der Bereitstellungsprofildatei fest.
    • Legen Sie removeProfile auf false fest, um das Profil zwischen den Builds beizubehalten.
    - task: InstallAppleProvisioningProfile@1
        inputs:
          provProfileSecureFile: '<secure-file.mobileprovision>'
          removeProfile: false
    

Der macOS-Build-Agent kann ihre App jetzt sicher signieren und für alle Builds ohne weiteres Zertifikat oder Profilverwaltung bereitstellen.

Verweisen auf die sicheren Dateien in der Xcode- oder Xamarin.iOS-Buildaufgabe

Um das sichere Zertifikat und das Profil in Ihren Pipelines zu verwenden, konfigurieren Sie die folgenden Einstellungen in den Xcode- oder Xamarin.iOS-Buildaufgaben.

Die Referenzen auf die sicheren Dateien in den Buildaufgaben verwenden Variablen für signingIdentity und provisioningProfileUuid. Diese Variablen werden automatisch von den Aufgaben Apple-Zertifikat installieren und Apple-Bereitstellungsprofil installieren für das ausgewählte Zertifikat und das Bereitstellungsprofil festgelegt.

Für Xcode:

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

Für Xamarin.iOS:

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

Der Pipelinebuild-Agent signiert und stellt Ihre App jetzt ohne eine weitere Zertifikat- oder Profilverwaltung auf dem Buildcomputer selbst bereit.

Weitere Informationen: