Wie Sie Ihre zusammengeführte 4D Anwendung notariell beglaubigen (macOS 12 & Xcode 13)

Hinweis: Update für macOS 12/Monterey und Xcode 13. Für Xcode 12 und älter, siehe diesen Blogbeitrag.

Mit Monterey (macOS 12) ist es sehr empfehlenswert, Anwendungen, die über ein öffentliches Netzwerk verteilt werden, zu beglaubigen. Eine große Anzahl von Entwicklern überträgt ihre Anwendungen über ein angeschlossenes Speichergerät oder per Dateifreigabe; eine notarielle Beglaubigung ist in diesen Fällen nicht erforderlich, wenn der Benutzer dem Entwickler bereits vertraut. Die notarielle Beglaubigung dient dazu, den Benutzern zu versichern, dass die Anwendung nicht bösartig ist, und ist nur für Anwendungen erforderlich, die von einer Website heruntergeladen werden.

Wenn Siebei der Erstellung Ihrer Anwendungen mit 4D v18 unsere integrierte Signaturfunktion verwenden, ist Ihre Anwendung bereit für die Beglaubigung. Dieser Vorgang wird außerhalb von 4D durchgeführt. Sie fügen Ihrer Bewerbung eine elektronische Signatur hinzu und übermitteln Ihre signierte Bewerbung an einen automatisierten Prüfdienst. Hier finden Sie alles, was Sie wissen müssen:

VORAUSSETZUNGEN

XCODE

Die Beglaubigung erfordert Xcode 13 oder höher und macOS 12 oder höher.

Wenn Sie mehr als eine Version von Xcode auf Ihrem Mac installiert haben, können Sie das Dienstprogramm Xcode-select verwenden, um die passende Version auszuwählen:

sudo xcode-select -s /path/to/Xcode13.app

Auch wenn Sie Xcode normalerweise nicht direkt verwenden, sollten Sie es zumindest einmal starten. Wenn es Sie auffordert, die „Developer Tools“ herunterzuladen, akzeptieren Sie dies.

Wenn es Sie auffordert, die Lizenzbedingungen zu bestätigen, akzeptieren Sie diese.

Es ist keine schlechte Idee, diesen Schritt nach der Installation einer neueren Version von Xcode zu wiederholen. Normalerweise müssen Sie die Lizenzänderungen akzeptieren, da sonst die Beglaubigung fehlschlägt.

In einigen Fällen müssen Sie sich bei https://appleid.apple.com/account/home anmelden, um die neuen Apple Store-Bedingungen zu akzeptieren. Andernfalls kann die Beglaubigung fehlschlagen (auch wenn Sie nicht im App Store veröffentlichen möchten).

ZWEI-FAKTOR-AUTHENTIFIZIERUNG

Sie müssen auch die Zwei-Faktor-Authentifizierung in Ihrer Apple ID aktiviert haben.

Wenn Sie sich nicht sicher sind, ob Sie die Zwei-Faktor-Authentifizierung eingerichtet haben, melden Sie sich auf Ihrer Apple-ID-Kontoseite an, suchen Sie im Abschnitt Sicherheit nach der Option Zwei-Faktor-Authentifizierung und sehen Sie nach, ob die Funktion aktiviert oder deaktiviert ist.

Überblick über den Prozess

Für die notarielle Beglaubigung ist eine Einrichtung erforderlich. Dies muss nur einmal durchgeführt werden. Danach müssen Sie für jeden Build zippen, hochladen, auf die Ergebnisse warten, stempeln und erneut zippen. Und dies gilt für jede Anwendung (Client, Server, Einzelbenutzer, Komponente) und jeden Build.

In diesem Blog-Beitrag wird zunächst jeder Schritt im Detail beschrieben, um das Verständnis des Prozesses zu erleichtern, und schließlich wird erklärt, wie man eine 4D-Methode zur vollständigen Automatisierung der Arbeit verwenden kann.

Einmalige Einrichtung

Für die notarielle Beurkundung benötigen Sie Folgendes:

  • Ihr Apple ID-Konto, normalerweise Ihre E-Mail
  • Die Team-ID Ihres Apple-Unternehmens. Siehe unten „Team-IDs abrufen“, wie Sie diese abrufen können
  • Für ein app-spezifisches Passwort, siehe unten, wie man es abruft

Mit diesen Daten können wir das Kennwort im Schlüsselbund registrieren. So können wir die Beglaubigung über die Befehlszeile (oder automatisch aus 4D) vornehmen, ohne das Kennwort im Klartext anzugeben.

App-spezifisches Kennwort generieren

  1. Melden Sie sich bei apple.com an.
  2. Klicken Sie im Bereich Anmeldung und Sicherheit auf App-spezifische Passwörter.
  3. Klicken Sie auf App-spezifisches Kennwort generieren oder auf „+“ und folgen Sie den Anweisungen auf dem Bildschirm.
  4. Sie können das neue Kennwort „notarytool“ nennen.
  5. Kopieren Sie den angezeigten Code.

Team-IDs abrufen

Sie sollten bereits Apple-Zertifikate für die Codesignierung Ihrer Anwendung angefordert und registriert haben. Normalerweise gibt es zwei davon (vier einschließlich iOS), wenn Sie dies tun. Eines beginnt mit Apple Development: your name(user-id), das andere mit Developer ID Application: company name(team-id).

Starten Sie den Apple-Schlüsselbund, wählen Sie Zertifikate und prüfen Sie, ob Sie Developer ID Application: company-name sehen. Wenn ja, ist die Zahl zwischen den Klammern () Ihre ID.

Wenn nicht, führen Sie Folgendes im Terminal aus:

xcrun altool --list-providers -u "AC_USERNAME" -p secret_2FA_password

Ersetzen Sie AC_USERNAME durch den Benutzernamen Ihres Apple-Kontos, Ihre E-Mail-Adresse und geben Sie den kopierten Code/2FA-Passwort von oben ein.

Das Terminal antwortet mit Ihrer Team-ID.

Weitere Einzelheiten finden Sie hier.

Anmeldeinformationen speichern

Führen Sie im Terminal den folgenden Befehl aus:

xcrun notarytool store-credentials "notarytool" --apple-id "AC_USERNAME" --team-id <WWDRTeamID> --password <secret_2FA_password>

Behalten Sie die Anführungszeichen bei (ersetzen Sie nur den Inhalt), aber verwenden Sie nicht die <>-Zeichen, sondern nur die ID oder das Passwort.

Erstellen/Zippen/Beglaubigen/Stempeln

Nach dem (einmaligen) Vorinstallationsprozess ist es nun an der Zeit, die eigentliche Erstellung durchzuführen.

Verwenden Sie den Befehl oder Dialog BUILD APPLICATION und erstellen Sie Ihre Komponente oder Anwendung. Verwenden Sie die Zertifizierungsfunktion, um die erstellte Anwendung automatisch zu signieren. Wenn der Build aufgrund eines Signierfehlers fehlschlägt, müssen Sie diesen zuerst beheben. Die Beglaubigung schlägt bei nicht signierten Anwendungen fehl.

Wenn die Komponente ausführbare Dateien im Ressourcenordner oder die Anwendung Komponenten oder Plugins enthält, müssen diese gültig sein und im Voraus signiert werden.

Zip

Wenn die Erstellung abgeschlossen ist, muss die Anwendung als nächstes gepackt werden:

Geben Sie im Terminal Folgendes ein:

/usr/bin/ditto -c -k --keepParent "$APP_PATH" "$ZIP_PATH"

Am einfachsten geben Sie die korrekten Pfade ein, indem Sie sie kopieren und im Terminal einfügen:

/usr/bin/ditto -c -k --keepParent "

Hinweis: Nach keepParent und dem einfachen Anführungszeichen steht ein Leerzeichen

Ziehen Sie nun die Anwendung oder Komponente in das Terminal und fügen Sie ein weiteres Anführungszeichen hinzu, um etwas wie folgt zu erhalten:

/usr/bin/ditto -c -k --keepParent "/Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.4dbase"

Fügen Sie ein Leerzeichen und ein Anführungszeichen hinzu, ziehen Sie den Zielordner per Drag & Drop und geben Sie dann den Namen der angeforderten Zip-Datei ein, gefolgt von einem Leerzeichen.

Die letzte Zeile sollte etwa so aussehen:

/usr/bin/ditto -c -k --keepParent "/Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.4dbase" "/Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.zip"

Drücken Sie die Eingabetaste, um den Befehl auszuführen und die Zip-Datei zu erhalten.

Wichtig: Tun Sie dies nicht mit anderen Zip-Tools, einschließlich des Finders. Damit die Notarisierung funktioniert, müssen Sie den Befehl ditto verwenden.

Hochladen von

Geben Sie im Terminal Folgendes ein (zur Erinnerung: Sie können den Dateipfad zur Erleichterung per Drag & Drop ziehen):

xcrun notarytool submit /Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.zip --keychain-profile notarytool --wait

Sie erhalten die folgende Antwort:

Durchführung von Überprüfungen vor der Einreichung für FileTransfer.zip und Initiierung der Verbindung mit dem Apple Notary Service…

Einreichungs-ID erhalten

id: 2071ae83-6660-4d84-afaf-97ea34e945c5

Erfolgreich hochgeladene Datei

id: 2071ae83-6660-4d84-afaf-97ea34e945c5

Pfad: /Benutzer/Thomas/Dokumente/4D/Komponenten/FileTransfer_Curl_Build/Komponenten/FileTransfer.zip

Wartet auf den Abschluss der Verarbeitung.

Aktueller Status: Angenommen…………..

Verarbeitung abgeschlossen

id: 2071ae83-6660-4d84-afaf-97ea34e945c5

Status: Angenommen

Wenn der Status „Ungültig“ lautet, können Sie nach dem Grund fragen, indem Sie eingeben:

xcrun notarytool log fb4a2e8f-e2fe-4689-b38f-f6a840abfeb6 --keychain-profile "notarytool" developer_log.json

Die Nummer hinter dem Protokoll ist die ID der eingereichten Antwort. Der letzte Name, developer_log.json, ist der Name oder der Pfad zu einer Ergebnisdatei auf Ihrer Festplatte, die Sie nach Belieben auswählen können.

Es antwortet mit:

Successfully downloaded submission log

id: fb4a2e8f-e2fe-4689-b38f-f6a840abfeb6

Ort: /Users/thomas/developer_log.json

Überprüfen Sie den Grund für den Fehler mit:

cat /Users/thomas/developer_log.json

Weitere Informationen finden Sie hier.

Automatisieren Sie den Prozess

Diese Aufgabe muss bei jedem Build wiederholt werden; es ist sinnvoll, sie zu automatisieren. Richtig? Hier ist alles, was Sie dazu brauchen:

Ein weiterer Anwendungsfall ist die Erstellung von Komponenten. Komponenten, die für Silicon Macs kompiliert werden, müssen notariell beglaubigt werden, was die Veröffentlichung von Komponenten über Github unkomfortabel macht.

Die Komponente: https://github.com/ThomasMaul/FileTransfer_Class enthält eine Methode „_buildComponent“, mit der die Komponente kompiliert, erstellt, signiert, notariell beglaubigt, geklammert und verpackt wird. All dies geschieht automatisch bei der Ausführung.

Der letzte Schritt besteht darin, das Zip als „Releases“ auf GitHub hochzuladen.

Ich hoffe, dieser Tipp hilft Ihnen, Ihre nächste Anwendung zu notarisieren. Zögern Sie nicht, uns im 4D Forum zu kontaktieren, wenn Sie weitere Hilfe benötigen.

Thomas Maul
• VP of Strategy, 4D Product Line • Als die deutsche Niederlassung von 4D 1988 gegründet wurde, trat Thomas dem Unternehmen als Technischer Direktor bei und half beim Aufbau der 4D Entwicklergemeinschaft in Deutschland und Österreich. Nach vielen Jahren, in denen er Kunden bei technischen Problemen unterstützte und zunehmend in Vertriebs- und Managementfragen involviert war, wurde er 1999 zum Geschäftsführer von 4D Deutschland befördert. Seit 2005 war er als Mitglied der Geschäftsleitung an der weltweiten Strategie des Unternehmens beteiligt, was zu seiner jetzigen Position als Vice President of Strategy, 4D Product Line, führte, wo er für die Definition und Umsetzung der Gesamtstrategie für die 4D Produktlinie in Verknüpfung mit den Teams für Programm, F&E, Vertrieb und Marketing verantwortlich ist.