Wie erstelle ich eine PEM-Datei, die auf dem Hosting-Server für APN-Nutzdaten gespeichert werden soll?
Wie erstelle ich eine PEM-Datei, die auf dem Hosting-Server für APN-Nutzdaten gespeichert werden soll?
Antworten:
Folgendes habe ich getan: Von: blog.boxedice.com und "iPhone Advanced Projects", Kapitel 10 von Joe Pezzillo.
Mit dem aps_developer_identity.cer im Schlüsselbund:
apns-dev-cert.p12
Datei als Datei, auf die Sie zugreifen können. Es ist nicht erforderlich, ein Passwort einzugeben.Der nächste Befehl generiert das Zertifikat im Terminal for PEM-Format von Mac (Privacy Enhanced Mail Security Certificate):
openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
Stellen Sie auf dem Server die Dateiberechtigung für diesen unverschlüsselten Schlüssel mithilfe von chmod 400 ein.
Entwicklungsphase:
Schritt 1: Erstellen Sie das Zertifikat .pem aus dem Zertifikat .p12
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
Schritt 2: Erstellen Sie den Schlüssel .pem aus dem Schlüssel .p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
Schritt 3 (optional): Wenn Sie die im zweiten Schritt angeforderte Passphrase entfernen möchten
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem
Schritt 4: Jetzt müssen wir das Schlüssel-PEM und das Zertifikat-PEM zusammenführen, um das Entwicklungs-PEM zu erhalten, das für Push-Benachrichtigungen in der Entwicklungsphase der App benötigt wird.
Wenn der 3. Schritt ausgeführt wurde, führen Sie Folgendes aus:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem
Wenn der dritte Schritt nicht ausgeführt wurde, führen Sie Folgendes aus:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem
Schritt 5: Überprüfen Sie die Gültigkeit des Zertifikats und die Konnektivität zu APNS
Wenn der 3. Schritt ausgeführt wurde, führen Sie Folgendes aus:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem
Wenn der dritte Schritt nicht ausgeführt wurde, führen Sie Folgendes aus:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem
Produktionsphase:
Schritt 1: Erstellen Sie das Zertifikat .pem aus dem Zertifikat .p12
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12
Schritt 2: Erstellen Sie den Schlüssel .pem aus dem Schlüssel .p12
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12
Schritt 3 (optional): Wenn Sie die im zweiten Schritt angeforderte Passphrase entfernen möchten
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem
Schritt 4: Jetzt müssen wir das Schlüssel-PEM und das Zertifikat-PEM zusammenführen, um das Produktions-PEM zu erhalten, das für Push-Benachrichtigungen in der Produktionsphase der App benötigt wird.
Wenn der 3. Schritt ausgeführt wurde, führen Sie Folgendes aus:
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem
Wenn der dritte Schritt nicht ausgeführt wurde, führen Sie Folgendes aus:
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem
Schritt 5: Überprüfen Sie die Gültigkeit des Zertifikats und die Konnektivität zu APNS.
Wenn der 3. Schritt ausgeführt wurde, führen Sie Folgendes aus:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem
Wenn der dritte Schritt nicht ausgeführt wurde, führen Sie Folgendes aus:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem
Schritte:
Dies gibt Ihnen drei Dateien:
PushChatKey.p12
)aps_development.cer
Gehen Sie zu dem Ordner, in den Sie die Dateien heruntergeladen haben, in meinem Fall zum Desktop:
$ cd ~/Desktop/
Konvertieren Sie die CER-Datei in eine PEM-Datei:
$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem
Konvertieren Sie die P12-Datei des privaten Schlüssels in eine PEM-Datei:
$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12
Importkennwort eingeben:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Sie müssen zuerst die Passphrase für die .p12-Datei eingeben, damit openssl sie lesen kann. Anschließend müssen Sie eine neue Passphrase eingeben, mit der die PEM-Datei verschlüsselt wird. Auch für dieses Tutorial habe ich "Pushchat" als PEM-Passphrase verwendet. Sie sollten etwas sichereres wählen. Hinweis: Wenn Sie keine PEM-Passphrase eingeben, gibt openssl keine Fehlermeldung aus, aber die generierte PEM-Datei enthält keinen privaten Schlüssel.
Kombinieren Sie abschließend das Zertifikat und den Schlüssel in einer einzigen PEM-Datei:
$ cat PushChatCert.pem PushChatKey.pem > ck.pem
Starten Sie die Terminal-Anwendung und geben Sie nach der Eingabeaufforderung den folgenden Befehl ein
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
- >> Apples eigenes Tutorial << - ist die einzige funktionierende Anleitung, auf die ich gestoßen bin. Es ist einfach und ich kann bestätigen, dass es sowohl auf einem Linux-PHP-Server als auch auf einem Windows-PHP-Server hervorragend funktioniert.
Sie finden den 5-stufigen Pem-Erstellungsprozess ganz unten auf der Seite.
Hier können Sie einen Blick darauf werfen. Ich habe den detaillierten Prozess mit Bildern beschrieben, angefangen beim Erstellen des Zertifikats über den App-Schlüssel bis hin zum Bereitstellungsprofil und schließlich zum PEM. http://docs.moengage.com/docs/apns-certificate-pem-file
Ich würde eine viel einfachere Lösung vorschlagen. Verwenden Sie einfach Certifire .
Certifire ist eine macOS-Anwendung, die Apple Push Notification Certificates mit nur einem Klick in wenigen Sekunden generiert.
Hier sind die Schritte:
1. Laden Sie die App herunter.
2. Melden Sie sich mit Ihren Anmeldeinformationen für das Apple Developer Account an.
3. Wählen Sie die App-ID.
4. Klicken Sie auf die Schaltfläche "Generieren".
5. Fertig!
Sie erhalten APN-Zertifikate sowohl im PEM-Format als auch im P12-Format. Darüber hinaus erhalten Sie auch .pem und .p12 (Schlüssel + Zertifikat)!
Viel mehr erhalten Sie auch No-Passphrase-Versionen all dieser Zertifikate!
ANMERKUNG: Sie müssen über die Team Agent- oder Administratorrolle in App Store Connect verfügen, um eine dieser Aufgaben ausführen zu können. Wenn Sie nicht Teil eines Teams im App Store Connect sind, hat dies wahrscheinlich keine Auswirkungen auf Sie.
Für das Senden von Push-Benachrichtigungen an eine iOS-Anwendung müssen Encyption Keys erstellt werden. In der Vergangenheit war dies ein umständlicher Prozess, bei dem SSL-Schlüssel und -Zertifikate verwendet wurden. Jedes SSL-Zertifikat war spezifisch für eine einzelne iOS-Anwendung. Im Jahr 2016 hat Apple einen neuen Authentifizierungsschlüsselmechanismus eingeführt, der zuverlässiger und benutzerfreundlicher ist. Die neuen Authentifizierungsschlüssel sind flexibler, einfacher zu warten und gelten für mehr als für iOS-Apps.
Obwohl es Jahre her ist, dass Authentifizierungsschlüssel eingeführt wurden, werden sie nicht von jedem Dienst unterstützt. FireBase und Amazon Pinpoint unterstützen Authentifizierungsschlüssel. Amazon SNS, Urban Airship, Twilio und LeanPlum nicht. Viele Open Source-Softwarepakete unterstützen noch keine Authentifizierungsschlüssel.
So erstellen Sie das erforderliche SSL-Zertifikat und exportieren es als PEM-Datei mit öffentlichen und privaten Schlüsseln:
Wenn Sie das SSL-Zertifikat bereits für die App auf der Apple Developer Center-Website eingerichtet haben, können Sie mit dem Konvertieren des Zertifikats in das PEM-Format fortfahren. Beachten Sie, dass Sie auf Probleme stoßen, wenn Sie nicht auch den privaten Schlüssel haben , die auf dem Mac erstellt wurde, die die Signaturanforderung erstellt , die an Apple hochgeladen wurde.
Lesen Sie weiter, um zu vermeiden, dass Sie den Überblick über diesen privaten Schlüssel verlieren.
Xcode kontrolliert keine Zertifikate oder Schlüssel für Push-Benachrichtigungen. Um Schlüssel zu erstellen und Push-Benachrichtigungen für eine App zu aktivieren, müssen Sie die Apple Developer Center-Website aufrufen. Der Abschnitt Zertifikate, Kennungen und Profile Ihres Kontos steuert App-IDs und -Zertifikate.
Um auf Zertifikate und Profile zugreifen zu können, müssen Sie entweder über eine kostenpflichtige Apple Developer Program-Mitgliedschaft verfügen oder Teil eines Teams sein, das dies tut.
Apps, die Push-Benachrichtigungen verwenden, können keine Platzhalter-App-IDs oder Bereitstellungsprofile verwenden. Für jede App müssen Sie einen App-ID-Eintrag im Apple Developer Center-Portal einrichten, um Push-Benachrichtigungen zu aktivieren.
Das Erstellen von SSL-Zertifikaten für Push-Benachrichtigungen besteht aus mehreren Aufgaben. Jede Aufgabe besteht aus mehreren Schritten. All dies ist erforderlich, um die Schlüssel im P12- oder PEM-Format zu exportieren. Überprüfen Sie die Schritte, bevor Sie fortfahren.
Um ein Zertifikat zu erstellen, müssen Sie eine Zertifikatsignierungsanforderung (Certificate Signing Request, CSR) auf einem Mac erstellen und auf Apple hochladen.
Wenn Sie dieses Zertifikat später als pkcs12-Datei (auch bekannt als p12-Datei) exportieren müssen, müssen Sie den Schlüsselbund von demselben Mac verwenden . Wenn die Signaturanforderung erstellt wird, generiert Keychain Access einen Satz von Schlüsseln im Standardschlüsselbund. Diese Schlüssel sind für die Arbeit mit dem Zertifikat erforderlich, das Apple aus der Signaturanforderung erstellt.
Es wird empfohlen, einen separaten Schlüsselbund speziell für die für die Entwicklung verwendeten Anmeldeinformationen zu verwenden. Wenn Sie dies tun, stellen Sie sicher, dass dieser Schlüsselbund als Standard festgelegt ist, bevor Sie Certificate Assistant verwenden.
Beim Erstellen der Zertifikatsignierungsanforderung generiert der Zertifikatassistent zwei Verschlüsselungsschlüssel im Standardschlüsselbund. Es ist wichtig, den Entwicklungsschlüsselbund als Standard festzulegen, damit sich die Schlüssel im richtigen Schlüsselbund befinden.
Beim Erstellen der Signaturanforderung wurde ein Schlüsselpaar generiert. Vergewissern Sie sich vor dem Hochladen der Signaturanforderung, dass der Entwicklungsschlüsselbund über die Schlüssel verfügt. Ihre Namen stimmen mit dem allgemeinen Namen überein, der in der Signaturanforderung verwendet wird.
Sobald die Zertifikatsignierungsanforderung erstellt wurde, laden Sie sie in das Apple Developer Center hoch. Apple erstellt das Push-Benachrichtigungszertifikat aus der Signaturanforderung.
Ihr Entwicklungsschlüsselbund sollte jetzt das Push-Zertifikat mit einem privaten Schlüssel unter Meine Zertifikate im Schlüsselbundzugriff anzeigen:
Zu diesem Zeitpunkt sollte der Entwicklungsschlüsselbund gesichert werden. Viele Teams bewahren ihre Push-Zertifikate auf sicheren USB-Laufwerken auf, verpflichten sich zur internen Versionskontrolle oder verwenden eine Backup-Lösung wie Time Machine. Der Entwicklungsschlüsselbund kann von verschiedenen Teammitgliedern gemeinsam genutzt werden, da er keine Anmeldeinformationen für die persönliche Codesignatur enthält.
Schlüsselbunddateien befinden sich in
~/Library/Keychains
.
Einige Push-Dienste von Drittanbietern erfordern Zertifikate im PEM-Format (Privacy Enhanced Mail), während andere Kryptografiestandards Nr. 12 für öffentliche Schlüssel (PKCS12 oder P12) erfordern. Das von Apple heruntergeladene Zertifikat kann zum Exportieren von Zertifikaten in diesen Formaten verwendet werden - jedoch nur, wenn Sie den privaten Schlüssel behalten haben.
So habe ich es unter Windows 7 gemacht, nachdem ich OpenSSL installiert habe (Link geht zum Win32-Installationsprogramm, wählen Sie die neueste Version und nicht die Light-Version).
Bei dieser Methode benötigen Sie nur die .cer
von Apple heruntergeladene Datei.
c:\OpenSSL-Win32\bin\openssl.exe x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM
Dadurch wird eine Datei erstellt, in die Sie dann auch Ihren privaten Schlüssel einfügen müssen.
----- BEGIN PRIVATE KEY -----
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
----- END PRIVATE KEY -----
----- BEGIN CERTIFICATE -----
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
----- END CERTIFICATE -----
Das ist es.
Ich erinnere mich nie an den openssl
Befehl, der zum Erstellen einer .pem
Datei benötigt wird. Deshalb habe ich dieses Bash-Skript erstellt, um den Vorgang zu vereinfachen:
#!/bin/bash
if [ $# -eq 2 ]
then
echo "Signing $1..."
if ! openssl pkcs12 -in $1 -out $2 -nodes -clcerts; then
echo "Error signing certificate."
else
echo "Certificate created successfully: $2"
fi
else
if [ $# -gt 2 ]
then
echo "Too many arguments"
echo "Syntax: $0 <input.p12> <output.pem>"
else
echo "Missing arguments"
echo "Syntax: $0 <input.p12> <output.pem>"
fi
fi
Benennen Sie es beispielsweise signpem.sh
und speichern Sie es im Ordner Ihres Benutzers ( /Users/<username>
?). chmod +x signpem.sh
Führen Sie nach dem Erstellen der Datei a aus , um sie ausführbar zu machen, und führen Sie dann Folgendes aus:
~/signpem myCertificate.p12 myCertificate.pem
Und myCertificate.pem
wird erstellt.
Es gibt eine einfachste Möglichkeit, eine .Pem-Datei zu erstellen, wenn Sie bereits eine apns p12-Datei in Ihrem Schlüsselbundzugriff haben.
Öffnen Sie das Terminal und geben Sie den folgenden Befehl ein:
Für die Entwicklung öffnetsl pkcs12 -in apns-div-cert.p12 -out apns-div-cert.pem -nodes -clcerts
Für die Produktion öffnet sich pkcs12 -in apns-dist-cert.p12 -out apns-dist-cert.pem -nodes -clcerts
Benennen Sie Ihre P12-Datei mit diesem Namen um: apns-div-cert.p12. Andernfalls müssen Sie stattdessen Ihren Dateinamen eingeben. Vielen Dank!!