Freigeben über


Signieren mobiler Apps

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

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

Android-App-Signierung

Der folgende Prozess signiert eine Android-App, während das Signaturzertifikat sicher bleibt.

Keystore-Datei abrufen

Folgen Sie der Android-Dokumentation , um eine Keystoredatei und den entsprechenden Schlüssel zu generieren. Die Keystoredatei enthält das Signaturzertifikat.

Wählen Sie in Azure Pipelines Libraries>Secure Files+Sichere Datei aus, und laden Sie die 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

Legen Sie in der YAML-Pipeline für eine Android-App die folgenden Variablen fest: keystore-password, key-alias, und key-password. Alternativ können Sie die Variablen mithilfe der Pipelinevariablen-Benutzeroberfläche festlegen.

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

Fügen Sie die AndroidSigning@3 Aufgabe nach dem Buildschritt zur Pipeline hinzu. In der AndroidSigning@3-Aufgabe:

  • <apkFiles> ist der erforderliche Pfad und Name der APK-Dateien zum Signieren. Der Standardwert ist **/*.apk.
  • <apksign> muss sein true sein. Dies ist die Standardeinstellung.
  • <apksignerKeystoreFile> 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.
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)

Jeder Build-Agent kann die App jetzt ohne Zertifikatverwaltung auf dem Buildcomputer selbst sicher signieren.

Apple iOS, macOS, tvOS oder WatchOS-App-Signierung

Um eine Apple-App zu signieren und bereitzustellen, benötigt der Xcode-Build Zugriff auf das P12-Signaturzertifikat und ein oder mehrere Bereitstellungsprofile.

Erhalt des P12-Signaturzertifikats

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 Zertifikat aus, das Sie exportieren möchten, und wählen Sie im Menü " Zertifikat exportieren " aus.

    Screenshot des Zertifikatexports mit Xcode.

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

Verwenden Sie zum Exportieren mithilfe der Schlüsselbund-Access-App unter macOS oder zum Generieren eines Signaturzertifikats unter Windows das unter iOS-Signieren beschriebene Verfahren.

Laden Sie die P12-Datei hoch, und fügen Sie die Kennwortvariable hinzu.

Wählen Sie in Azure Pipelines Libraries>Secure Files+Sichere Datei aus, und laden Sie die P12-Datei in die Sichere Dateienbibliothek von Azure Pipelines hoch. Während des Uploads wird das Zertifikat verschlüsselt und sicher gespeichert.

Fügen Sie in der Variablen-Benutzeroberfläche für die Buildpipeline der App eine Variable mit dem Namen P12password mit dem Zertifikatkennwort als Wert hinzu. Wählen Sie das Sperrsymbol aus, um das Kennwort zu sichern und in Protokollen zu verdecken.

Bereitstellungsprofil abrufen

Wenn die App keine automatische Signatur verwendet, laden Sie das App-Bereitstellungsprofil aus dem Apple Developer-Portal herunter. 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.

Signier- und Bereitstellungsaufgaben zur Pipeline hinzufügen

Sie benötigen mindestens einen Agentcomputer, um einen Azure Pipelines-Build oder eine Releasepipeline auszuführen. Sie können von Microsoft gehostete Agents verwenden oder selbst gehostete Agents einrichten. Weitere Informationen finden Sie unter Azure Pipeline-Agents.

Für die Signierung und Bereitstellung von Apple-Apps auf gehosteten macOS-Agents oder wenn Sie den Zugriff auf die Agent-Schlüsselkette nicht zulassen möchten, können Sie während der einzelnen Builds erforderliche Zertifikate und Profile installieren. Wenn Sie einen selbst gehosteten Agent verwenden und den Personen und Prozessen vertrauen, die auf den Agentschlüsselbund zugreifen können, können Sie das Zertifikat und die Profile im macOS-Build-Agent vorab installieren.

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

Wenn Sie keinen dauerhaften Zugriff auf den Build-Agent haben, z. B. wenn Sie von Microsoft gehostete Agents verwenden, können Sie das Zertifikat und das Profil während der einzelnen Builds installieren. Die Pipeline installiert das P12-Zertifikat und das Bereitstellungsprofil am Anfang jedes Builds und entfernt sie, wenn der Build abgeschlossen ist.

Fügen Sie in der YAML-Buildpipeline für die App die InstallAppleCertificate@2 Aufgabe vor der aufgabe Xcode@5 hinzu. Ersetzen Sie <secure-file.p12> im Code durch den Namen der hochgeladenen P12-Datei . Verwenden Sie für certPwd die von Ihnen erstellte sichere P12password-Variable.

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

Fügen Sie außerdem die InstallAppleProvisioningProfile@1 Aufgabe vor dem Xcode@5 Vorgang zur Pipeline hinzu. Ersetzen Sie <secure-file.mobileprovision> durch den Namen der Bereitstellungsprofildatei.

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

Hinweis

In den InstallAppleCertificate@2 und InstallAppleProvisioningProfile@1 Aufgaben ist der Parameter removeProfile standardmäßig auf true eingestellt, was das Zertifikat und das Profil nach jedem Build entfernt.

Jeder Build-Agent kann die App jetzt sicher signieren, ohne dass eine Zertifikat- oder Profilverwaltung auf dem Buildcomputer selbst erforderlich ist.

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

Alternativ können Sie das Signaturzertifikat und die Bereitstellungsprofile auf selbst gehosteten macOS-Build-Agents für die fortgesetzte Verwendung durch Builds vorab installieren. Verwenden Sie diese Methode nur, wenn Sie den Personen und Prozessen vertrauen, die Zugriff auf die macOS-Schlüsselkette auf den Agentcomputern haben.

Hinzufügen der Schlüsselbundkennwortvariable zur Pipeline

Fügen Sie der Buildpipeline eine neue Variable namens KEYCHAIN_PWD hinzu. Legen Sie den Wert als standardmäßiges macOS-Schlüsselbundkennwort fest, das normalerweise das Kennwort für den Benutzer ist, der den Agent startet. Wählen Sie das Sperrsymbol aus, um dieses Kennwort zu sichern.

Installieren des P12-Zertifikats auf dem Agent

Führen Sie zum Installieren des P12-Zertifikats im Standardschlüsselbund den folgenden Befehl aus einem macOS-Terminalfenster auf dem Agentcomputer aus. Ersetzen Sie <certificate.p12> durch den P12-Dateipfad und -namen, und ersetzen Sie <password> durch das Verschlüsselungskennwort der P12-Datei.

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

Installieren Sie das Bereitstellungsprofil auf dem Agenten

Suchen Sie den vollständigen Namen Ihrer Signaturidentität, indem Sie in ein macOS-Terminalfenster eingeben security find-identity -v -p codesigning . 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).

Um das Bereitstellungsprofil auf dem Agent zu installieren, führen Sie den folgenden Befehl aus dem macOS-Terminalfenster aus. Ersetzen Sie <profile> durch den Pfad zur Bereitstellungsprofildatei. 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 in der YAML-Buildpipeline die InstallAppleCertificate@2 Aufgabe vor der aufgabe Xcode@5 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 zu erlauben.
  • keychainPassword: Die KEYCHAIN_PWD-Variable.
  • deleteCert: false um das Zertifikat zwischen 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 auch die InstallAppleProvisioningProfile@1 Aufgabe vor dem Xcode@5 Vorgang hinzu. Im Code:

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

Der macOS-Build-Agent kann die App jetzt sicher signieren und für alle Builds bereitstellen, ohne dass weitere Zertifikate oder Profilverwaltung erforderlich sind.

Konfigurieren der Xcode-Buildaufgabe, um auf die sicheren Dateien zu verweisen

Die Xcode-Buildaufgabe (Xcode@5) bezieht sich auf die signingIdentity und die provisioningProfileUuid verwendung von Variablen. Diese Variablen werden automatisch für das ausgewählte Zertifikat und das Bereitstellungsprofil durch die vorhergehenden Aufgaben Apple-Zertifikat installieren und Apple-Bereitstellungsprofil installieren festgelegt.

Fügen Sie der Pipeline Xcode-Buildaufgabe (Xcode@5) den folgenden Code hinzu:

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

Der Pipeline-Build-Agent signiert und stellt Ihre App jetzt auf sichere Weise bereit, ohne dass zusätzliche Zertifikate oder Profile auf dem Build-Computer oder in der Build-Pipeline verwaltet werden müssen.