Zum Inhalt

47-Tage-Zertifikate sind im Anmarsch. Sind Sie bereit?

Jetzt handeln →

Signieren von Apple-Anwendungen mit Codesign Secure und unserem Apple CSP

codesign Sicher

Einführung 

Die Anwendungen, die Sie auf Ihrem Macintosh (Mac) verwenden, sind .app-Anwendungen. Anwendungen aus dem Mac App Store oder generell auf einem Mac müssen signiert sein, um mit dem Betriebssystem kompatibel zu sein. Das Signieren dieser .app-Dateien kann durch den iOS App Store oder mit Ihren eigenen Tools oder Ihrer Codesignatur-Plattform einige Zeit in Anspruch nehmen. Viele Codesignatur- Plattformen können .app-Dateien auf einem Mac nicht signieren. Wir von Encryption Consulting bieten Ihnen jedoch eine einfache Möglichkeit, diese .app-Dateien auf Ihrem Mac zu signieren. Mit CodeSign Secure und unserem Apple Signing CSP können Sie Ihre Umgebung schnell und effizient einrichten, um .app-Dateien problemlos zu signieren.

Signieren einer Apple-Anwendung mit CodeSign Secure, kurz gesagt: Installieren Sie den ECCssProvider CSP auf Ihrem Mac, authentifizieren Sie ihn bei CodeSign Secure mit einem P12-Clientzertifikat und führen Sie ihn anschließend aus. codesign -f -s <certificate hash> <path to .app, .dmg, .pkg, .ipa, or .mpkg>Der private Schlüssel verlässt niemals das HSM von CodeSign Secure; der CSP fordert lediglich eine Signatur von ihm an.

Wichtige Erkenntnisse

  • Im Gegensatz zu Windows werden bei macOS keine gängigen Stammzertifikatsketten vorab als vertrauenswürdig eingestuft; wenn Sie mit einem OV/EV-Zertifikat signieren, müssen Sie die vollständige Zertifikatskette selbst in die Schlüsselbundverwaltung importieren, da Codesign keine vertrauenswürdige Signatur erstellen kann.
  • Der Befehl codesign identifiziert das zu verwendende Zertifikat anhand seines SHA-1-Hashwerts und nicht anhand seines Namens. Überprüfen Sie daher vor der Signierung immer den Hashwert über security export-smartcard, anstatt davon auszugehen, dass sich die Zertifikatsreihenfolge nicht geändert hat.

Umgebungsmatrix

KomponenteAnforderung
ProviderECCssProvider (CodeSign Secures Apple CSP), heruntergeladen aus dem Abschnitt „Signierungstools“.
AuthentifizierungDas P12-Clientzertifikat wurde über CodeSign Secure unter „Benutzer > Authentifizierungszertifikat generieren“ erstellt und in den System-Schlüsselbund importiert.
ZertifikatsketteDie vollständige OV/EV-Kette muss in die Schlüsselbundverwaltung importiert werden; macOS vertraut diesen Stammverzeichnissen nicht vorab wie Windows.
SignaturtoolApples integriertes Codesign (Teil der Xcode-Befehlszeilenwerkzeuge)
Unterstützte Dateitypen.app, .dmg, .pkg, .ipa, .mpkg

Apple-Signatur

Apple-Anwendungen sind ein unverzichtbarer Bestandteil von macOS. Wenn Sie solche Anwendungen für den iOS App Store entwickeln, müssen Sie sicherstellen, dass die Dateien ordnungsgemäß signiert sind. Die manuelle Einrichtung der Apple-Signatur kann kompliziert sein, aber mit CodeSign Secures Apple Signing CSP können Sie die Voraussetzungen auf Ihrem Mac einfach einrichten und mit der Apple-Signatur beginnen. 

Konfiguration für Apple Signing

Die Konfiguration Ihres Macs für die Ausführung unseres Apple CSP ist schnell und einfach. Eine der wichtigsten Voraussetzungen ist der Zugriff auf die CodeSign Secure-Webseite. Anschließend sind nur noch wenige Schritte nötig, um Ihren Computer für die Signierung vorzubereiten. Beginnen wir mit den Downloads von CodeSign Secure.

Voraussetzungen: Sie benötigen einen Benutzernamen und Zugriff auf die CodeSign Secure-Webseite.

Gehen Sie auf der CodeSign Secure-Webseite zum Abschnitt „Signatur-Tools“ und laden Sie den EC Provider für Mac herunter.

Co-Design von Signaturtools

Entpacken Sie die Datei und übertragen Sie sie in den Anwendungsordner. Führen Sie von hier aus die Anwendung ECCssProvider aus.

ECCssProvider-Einstiegsseite

Stellen Sie sicher, dass Sie Ihre CodeSign Secure URL, Ihren Benutzernamen und Ihren Code in die Anwendung eingegeben haben, und wählen Sie dann „Aktualisieren“.

ECCssProvider-Detailseite

Die Seite sollte nun die verschiedenen Zertifikate anzeigen , auf die Sie zum Signieren Zugriff haben. Als Nächstes müssen wir das P12-Zertifikat für den Zugriff auf die Signierfunktion auf dem Server einrichten. Rufen Sie dazu die sichere CodeSign-Webseite auf und wählen Sie den Bereich „Einstellungen“. Wählen Sie dort „Benutzer“ aus. Wählen Sie anschließend im Dropdown-Menü auf der rechten Seite „Authentifizierungszertifikat generieren“ aus.

Co-Design der Benutzerverwaltung

Geben Sie den Zertifikatsnamen, den Benutzernamen und das Ablaufdatum des P12-Zertifikats ein und wählen Sie anschließend die Option „Generieren“. Ein P12-Zertifikat sollte generiert und auf Ihren Computer heruntergeladen werden. Speichern Sie das Passwort des Zertifikats sowie das Zertifikat selbst.

Codesigning generiert Authentifizierungszertifikat

Doppelklicken Sie auf Ihr neu heruntergeladenes P12-Zertifikat und öffnen Sie es mit der Anwendung „Schlüsselbundverwaltung“. Sie werden dann zur Eingabe des Administratorkennworts und des Zertifikatkennworts aufgefordert. Anschließend wird das Zertifikat in Ihrem Systemschlüsselbund abgelegt.

Schlüsselbund-Zugriffszertifikate

Nachdem Sie das Authentifizierungszertifikat in Ihre Schlüsselkette eingefügt haben, öffnen Sie den Schlüssel selbst. Gehen Sie unter „System“ zu „Zertifikate“. Das Zertifikat sollte in der Dropdown-Liste angezeigt werden. Klicken Sie mit der rechten Maustaste darauf und wählen Sie „Informationen“. Wählen Sie anschließend „Zugriffskontrolle“ und erlauben Sie den Zugriff auf das Zertifikat mithilfe der Anwendung „ECCssProvider.app“. Möglicherweise müssen Sie Ihren Computer neu starten, damit die Berechtigungsänderung wirksam wird.

Schlüsselbundzugriffsschlüssel
importierter privater Schlüssel

Stellen Sie anschließend sicher, dass Sie den vollständigen Zertifizierungspfad des zu signierenden Zertifikats in Ihrem Schlüsselbundzugriff haben. Mac-Geräte beginnen in der Regel nicht mit den bekannten Zertifizierungsketten wie Windows-Computer. Wenn Sie also ein OV/EV-Zertifikat zum Signieren verwenden, müssen Sie die gesamte Zertifizierungskette hochladen.

Schlüsselbund-Zugriffszertifikate

Nun muss folgender Befehl ausgeführt werden: `/Applications/ECCssProvider.app/Contents/macOS/ECCssProvider -–batch -–tlsclient <Name des Authentifizierungszertifikats>` . Dieser Befehl legt das hochgeladene Authentifizierungszertifikat als TLS-Authentifizierungszertifikat für die Verbindung zum CodeSign Secure-Server fest.

Befehlsfenster

Unser nächster Befehl lautet `security export-smartcard -i com.encryptionconsulting.ECCssProvider.CssToken:ECCSS` . Dieser Befehl zeigt alle in der ECCssProvider-GUI aufgelisteten Zertifikate sowie deren Details an. Wichtig ist der SHA1-Hash des jeweiligen Zertifikats. Anhand dieses Hashs bestimmen wir, mit welchem ​​Zertifikat wir signieren. Die Zertifikate sind in der gleichen Reihenfolge wie in der GUI aufgelistet.

Befehlsfenster

Abschließend führen wir den Befehl `codesign` aus: `codesign -f -s <Hash des zu signierenden Zertifikats> <Anwendung oder Datei zum Signieren>` . Die Option `-f` dient zum Überschreiben vorhandener Signaturen, die Option `-s` gibt an, was signiert werden soll. Anschließend geben wir den Hash des verwendeten Zertifikats und den Pfad zur zu signierenden Datei an.

Verification

Überprüfen Sie nach dem Signieren, ob die Signatur korrekt angewendet wurde, bevor Sie die Datei verteilen. Führen Sie Folgendes aus:

codesign --verify --verbose

Eine erfolgreiche Signatur meldet „gültig auf dem Datenträger“ und „erfüllt die festgelegten Anforderungen“. Um auch zu bestätigen, dass die Datei die Gatekeeper-Prüfung auf einem anderen Rechner besteht, führen Sie Folgendes aus:

spctl --assess --verbose

Dieser Bericht gibt an, ob Gatekeeper die Datei anhand ihrer Signatur und, bei notariell beglaubigten Apps, anhand ihres Notarisierungstickets akzeptiert.

Häufige Fehler

FehlerWahrscheinliche UrsacheFixieren
Codesign meldet, dass die Identität nicht vertrauenswürdig ist.Die vollständige OV/EV-Zertifikatskette wurde nicht in den Schlüsselbund importiert.Importieren Sie alle Zwischen- und Stammzertifikate für das Signaturzertifikat, nicht nur das Endbenutzerzertifikat.
ECCssProvider ist nicht als zulässige Anwendung für den Schlüssel aufgeführt.Die Zugriffskontrolle für das importierte P12-Zertifikat wurde nicht aktualisiert, um ECCssProvider.app zuzulassen.Überprüfen Sie in der Schlüsselbundverwaltung unter „Informationen“ > „Zugriffskontrolle“ das Zertifikat erneut und starten Sie den Computer anschließend neu.
Für die Signierung wird das falsche Zertifikat verwendet.Die Zertifikatsreihenfolge in der GUI stimmt nicht mit dem angenommenen SHA-1-Hash überein.Führen Sie den Sicherheitsexport-Smartcard-Befehl unmittelbar vor der Unterzeichnung erneut aus, um den aktuellen Hash zu bestätigen.

CI/CD-Nutzung und -Bereinigung

Für wiederholtes Signieren auf einem Build-Rechner sollte die Signier- und anschließende Verifizierungssequenz in einem Skript zusammengefasst werden, sodass ein Build sofort fehlschlägt, wenn die Verifizierung fehlschlägt, anstatt ein nicht verifiziertes Artefakt auszuliefern. Da der private Schlüssel im HSM von CodeSign Secure verbleibt, muss kein Signaturschlüssel anschließend vom Build-Agenten entfernt werden. Die einzige lokal vorhandene Anmeldeinformation ist das P12-Authentifizierungszertifikat, das für die Verbindung zum Server verwendet wird. Dieses sollte aus der Schlüsselbundverwaltung entfernt werden, wenn der Build-Agent gemeinsam genutzt oder außer Betrieb genommen wird.

Häufig gestellte Fragen

Warum verlangt macOS den Import der vollständigen Zertifikatskette, Windows hingegen nicht?

Windows wird mit vielen gängigen öffentlichen CA-Root- und Zwischenzertifikaten ausgeliefert, die im Zertifikatsspeicher bereits als vertrauenswürdig eingestuft sind. Der macOS-Schlüsselbund vertrauenswürdigt diese Zertifikate nicht für Codesignierungszwecke, daher müssen die Zwischenzertifikate einer OV/EV-Zertifikatskette, die unter Windows problemlos funktioniert, manuell in die Schlüsselbundverwaltung von macOS importiert werden.

Bestätigt codesign --verify, dass die App Gatekeeper passieren wird?

Nicht ganz. `codesign --verify` bestätigt, dass die Signatur selbst gültig und unverfälscht ist. `spctl --assess` prüft die umfassendere Gatekeeper-Richtlinie, einschließlich des Notarisierungsstatus, der eine separate Anforderung für Apps darstellt, die außerhalb des Mac App Stores vertrieben werden.

Fazit

Wie Sie sehen, ist die Einrichtung für die Apple-Signatur sehr einfach, insbesondere wenn Sie bereits Erfahrung mit verschiedenen Signaturtypen von CodeSign Secure haben . Unser Apple CSP kann alle Apple-Dateitypen signieren, darunter .app-, .dmg-, .pkg-, .ipa- und .mpkg-Dateien. Ausführlichere Informationen finden Sie im Dokumentationsbereich der CodeSign Secure-Webseite. Bei Fragen, Interesse an einer Demo oder einem Proof of Concept kontaktieren Sie uns bitte unter [email protected] oder besuchen Sie www.encryptionconsulting.com.