Archiv für den Monat: August 2015

pem-Zertifikate für iOS XDK Cordova App erstellen

Wir haben unsere iOS-App mit XDK gebaut. Dies stellt für den Build-Prozess bereits Anleitungen zur Verfügung, zu der uns folgende Hinweise sicherlich einige Stunden Arbeit erstpart hätten:

  • Im Apple Member-Center sollte zunächst eine App-ID für die App erstellt werden, z.B. com.meine-firma.meine-app. Diese App-ID muss so auch in XDK’s Build-Settings der App eingestellt werden.
  • Dann muss die .csr-Datei (Eine Zertifikatsanforderung) mit XDK erstellt werden. Diese muss dann in Apple’s Member-Center beim Erstellen des Zertifikates (Development oder Production) eingefügt werden. Man kann eine solche .csr-Datei zwar auch anders erstellen, z.B. wie im Member-Center beschrieben mit Apple’s Schlüsselbundverwaltung, das damit erstelle Zertifikat kann man aber nicht im XDK verwenden!
  • Das im Member-Center erzeugte .cer-Zertifikat kann man in MacOS ganz einfach mit der Schlüsselbundverwaltung öffnen und als .p12 exportieren. Dies ist bereits ein Format, dass man in XDK einfügen kann.
    Falls nicht im .p12-Format exportiert werden kann, dann in der Schlüsselbundverwaltung im Tab „Meine Zertifikate“ schauen (siehe https://stackoverflow.com/questions/15662377/unable-to-export-apple-production-push-ssl-certificate-in-p12-format )

    !!Achtung!! Das Ältere ios-Distribution-Zertifikat oder Apple-Distribution Zertifikat muss aus dem Schlüsselbund entfernt werden. Sonst die die App mit dem alten Zerfikat kompiliert und ein Fehler erscheint:
    „Provisioning profile doesn’t match the signing certificate.“

  • Falls z.B. noch ein APN-Zertifikat für Push-Benachrichtigungen benötigt wird, dass im .pem-Format vorliegen muss, kann dies im Teminal konvertiert werden mitopenssl pkcs12 -in aps_production.p12 -out aps_production.pem -nodes -clcerts!!Achtung!! OpenSSL 1.x verwenden! Das neue OpenSSL 3.x unterstützt die veraltete Verschlüsselungstechnologie nicht.
  • Es müssen für den Build-Prozess außerdem noch mindestens eine Provisioning-Datei angegeben werden (adhoc, wenn man sein erzeugtes .ipa-Build ohne den Appstore direkt ausprobieren möchte, oder production). Diese wird im Memenber-Center erzeugt und muss in den www-Order des XDK-Projektes eingefügt werden. Anschließend muss dies in XDK in den Build-Settings der App ausgewählt werden.

Und noch ein Tipp zu den Build-Settings am Rande: Wenn die App per Ajax auch Verbindung zum Internet herstellen dürfen soll, müssen auch Access Lists angegeben werden. Das einfachste ist für Internal sowie für External jeweils ein * anzugeben, um alles zuzulassen.