Comment créer un fichier .pem à stocker sur le serveur d'hébergement pour les données utiles APN?
Comment créer un fichier .pem à stocker sur le serveur d'hébergement pour les données utiles APN?
Réponses:
Voici ce que j'ai fait, De: blog.boxedice.com et "iPhone Advanced Projects" chapitre 10 parJoe Pezzillo.
Avec le aps_developer_identity.cer dans le trousseau:
apns-dev-cert.p12
fichier quelque part où vous pouvez y accéder. Il n'est pas nécessaire de saisir un mot de passe.La commande suivante génère le certificat au format Terminal de Mac pour PEM (Privacy Enhanced Mail Security Certificate):
openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
Sur le serveur, définissez l'autorisation de fichier de cette clé non chiffrée à l'aide de chmod 400.
Phase de développement:
Étape 1: Créez le certificat .pem à partir du certificat .p12
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
Étape 2: Créez la clé .pem à partir de la clé .p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
Étape 3 (facultative): si vous souhaitez supprimer la phrase de passe demandée à la deuxième étape
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem
Étape 4: Nous devons maintenant fusionner la clé .pem et le certificat .pem pour obtenir le .pem de développement nécessaire pour les notifications push dans la phase de développement de l'application.
Si la 3e étape a été effectuée, exécutez:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem
Si la 3e étape n'a pas été effectuée, exécutez:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem
Étape 5: Vérifiez la validité du certificat et la connectivité à APNS
Si la 3e étape a été effectuée, exécutez:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem
Si la 3e étape n'a pas été effectuée, exécutez:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem
Phase de production:
Étape 1: Créez le certificat .pem à partir du certificat .p12
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12
Étape 2: Créez la clé .pem à partir de la clé .p12
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12
Étape 3 (facultative): si vous souhaitez supprimer la phrase de passe demandée à la deuxième étape
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem
Étape 4: Nous devons maintenant fusionner la clé .pem et le certificat .pem pour obtenir le .pem de production nécessaire pour les notifications push dans la phase de production de l'application.
Si la 3e étape a été effectuée, exécutez:
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem
Si la 3e étape n'a pas été effectuée, exécutez:
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem
Étape 5: Vérifiez la validité du certificat et la connectivité à APNS.
Si la 3e étape a été effectuée, exécutez:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem
Si la 3e étape n'a pas été effectuée, exécutez:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem
Pas:
Cela vous donne trois fichiers:
PushChatKey.p12
)aps_development.cer
Allez dans le dossier où vous avez téléchargé les fichiers, dans mon cas le bureau:
$ cd ~/Desktop/
Convertissez le fichier .cer en fichier .pem:
$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem
Convertissez le fichier .p12 de la clé privée en fichier .pem:
$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12
Entrez le mot de passe d'importation:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Vous devez d'abord entrer la phrase de passe du fichier .p12 pour qu'openssl puisse le lire. Ensuite, vous devez entrer une nouvelle phrase de passe qui sera utilisée pour crypter le fichier PEM. Encore une fois pour ce tutoriel, j'ai utilisé «pushchat» comme mot de passe PEM. Vous devriez choisir quelque chose de plus sûr. Remarque: si vous n'entrez pas de phrase de passe PEM, openssl ne donnera pas de message d'erreur mais le fichier .pem généré ne contiendra pas la clé privée.
Enfin, combinez le certificat et la clé dans un seul fichier .pem:
$ cat PushChatCert.pem PushChatKey.pem > ck.pem
Lancez l' application Terminal et entrez la commande suivante après l'invite
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
- >> Le propre tutoriel d'Apple << - est le seul ensemble d'instructions fonctionnel que j'ai rencontré. C'est simple et je peux confirmer que cela fonctionne parfaitement à la fois sur un serveur Linux PHP et un serveur Windows PHP.
Vous pouvez trouver leur processus de création de pem en 5 étapes en bas de la page.
Vous pouvez jeter un œil ici. J'ai le processus détaillé décrit avec des images, dès la création du certificat, à la clé de l'application, au profil d'approvisionnement, en passant par le pem. http://docs.moengage.com/docs/apns-certificate-pem-file
REMARQUE: vous devez disposer du rôle Team Agent ou Admin dans App Store Connect pour effectuer l'une de ces tâches. Si vous ne faites pas partie d'une équipe dans App Store Connect, cela ne vous affecte probablement pas.
L'envoi de notifications push à une application iOS nécessite la création de clés de cryptage. Dans le passé, c'était un processus lourd qui utilisait des clés et des certificats SSL. Chaque certificat SSL était spécifique à une seule application iOS. En 2016, Apple a introduit un nouveau mécanisme de clé d'authentification plus fiable et plus facile à utiliser. Les nouvelles clés d'authentification sont plus flexibles, simples à maintenir et à appliquer à plus que sur l'application iOS.
Même si cela fait des années que les clés d'authentification ont été introduites, tous les services ne les prennent pas en charge. FireBase et Amazon Pinpoint prennent en charge les clés d'authentification. Amazon SNS, Urban Airship, Twilio et LeanPlum ne le font pas. De nombreux progiciels open source ne prennent pas encore en charge les clés d'authentification.
Pour créer le certificat SSL requis et l'exporter en tant que fichier PEM contenant des clés publiques et privées:
Si vous avez déjà configuré le certificat SSL pour l'application sur le site Web d'Apple Developer Center, vous pouvez ignorer la conversion du certificat au format PEM. Gardez à l'esprit que vous rencontrerez des problèmes si vous ne possédez pas également la clé privée qui a été générée sur le Mac qui a créé la demande de signature qui a été téléchargée sur Apple.
Lisez la suite pour savoir comment éviter de perdre la trace de cette clé privée.
Xcode ne contrôle pas les certificats ou les clés pour les notifications push. Pour créer des clés et activer les notifications push pour une application, vous devez accéder au site Web Apple Developer Center. La section Certificats, identifiants et profils de votre compte contrôle les identifiants et certificats d'application.
Pour accéder aux certificats et aux profils, vous devez avoir un abonnement payant au programme Apple Developer Program ou faire partie d'une équipe qui le fait.
Les applications qui utilisent des notifications push ne peuvent pas utiliser d'identifiants d'application génériques ni de profils d'approvisionnement. Chaque application nécessite que vous configuriez un enregistrement d'ID d'application dans le portail Apple Developer Center pour activer les notifications push.
La création de certificats SSL pour les notifications push est un processus de plusieurs tâches. Chaque tâche comporte plusieurs étapes. Tous ces éléments sont nécessaires pour exporter les clés au format P12 ou PEM. Passez en revue les étapes avant de continuer.
Pour créer un certificat, vous devrez effectuer une demande de signature de certificat (CSR) sur un Mac et la télécharger sur Apple.
Plus tard, si vous devez exporter ce certificat en tant que fichier pkcs12 (aka p12), vous devrez utiliser le trousseau du même Mac . Lorsque la demande de signature est créée, Keychain Access génère un ensemble de clés dans le trousseau par défaut. Ces clés sont nécessaires pour travailler avec le certificat qu'Apple créera à partir de la demande de signature.
C'est une bonne pratique d'avoir un trousseau distinct spécifiquement pour les informations d'identification utilisées pour le développement. Si vous faites cela, assurez-vous que ce trousseau est défini comme valeur par défaut avant d'utiliser l'assistant de certificat.
Lors de la création de la demande de signature de certificat, l'assistant de certificat génère deux clés de chiffrement dans le trousseau par défaut. Il est important de faire du trousseau de développement le trousseau par défaut pour que les clés soient dans le bon trousseau.
La création de la demande de signature a généré une paire de clés. Avant de télécharger la demande de signature, vérifiez que le trousseau de développement possède les clés. Leurs noms seront les mêmes que le nom commun utilisé dans la demande de signature.
Une fois la demande de signature de certificat créée, téléchargez-la dans le centre de développement Apple. Apple créera le certificat de notification push à partir de la demande de signature.
Votre trousseau de développement doit maintenant afficher le certificat push avec une clé privée sous Mes certificats dans Keychain Access:
À ce stade, le trousseau de développement doit être sauvegardé. De nombreuses équipes conservent leurs certificats push sur des clés USB sécurisées, s'engagent au contrôle de version interne ou utilisent une solution de sauvegarde comme Time Machine. Le trousseau de développement peut être partagé entre différents membres de l'équipe car il ne contient aucune information d'identification de signature de code personnelle.
Les fichiers de trousseau se trouvent dans
~/Library/Keychains
.
Certains services push tiers nécessitent des certificats au format PEM (Privacy Enhanced Mail), tandis que d'autres nécessitent les normes de cryptographie à clé publique # 12 (PKCS12 ou P12). Le certificat téléchargé depuis Apple peut être utilisé pour exporter des certificats dans ces formats, mais uniquement si vous avez conservé la clé privée.
Je suggérerais une solution beaucoup plus simple. Utilisez simplement Certifire .
Certifire est une application macOS qui génère des certificats de notification Apple Push en un seul clic et en quelques secondes.
Voici les étapes:
1. Téléchargez l'application.
2. Connectez-vous à l'aide des informations d'identification de votre compte de développeur Apple.
3. Choisissez l'App-ID
4. Cliquez sur le bouton "Générer"
5. Vous avez terminé!
Vous obtiendrez des certificats APN au format .pem ainsi qu'au format .p12. Encore plus, vous obtiendrez également .pem et .p12 combinés (clé + cert)!
Bien plus, vous obtiendrez également des versions sans mot de passe de tous ces certificats!
C'est ainsi que je l'ai fait sur Windows 7, après avoir installé OpenSSL (le lien va vers l'installateur Win32, choisissez la dernière version et non la version light).
Avec cette méthode, vous n'avez besoin que du .cer
fichier téléchargé depuis Apple.
c:\OpenSSL-Win32\bin\openssl.exe x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM
cela créera un fichier dont vous devrez ensuite ajouter votre clé privée.
----- BEGIN PRIVATE KEY -----
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
----- FIN DE LA CLÉ PRIVÉE -----
----- BEGIN CERTIFICAT -----
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
----- FIN DU CERTIFICAT -----
C'est tout.
Il existe un moyen le plus simple de créer un fichier .Pem si vous avez déjà un fichier apns p12 dans votre accès à la chaîne de clés.
Ouvrez le terminal et entrez la commande ci-dessous:
Pour le développement openssl pkcs12 -in apns-div-cert.p12 -out apns-div-cert.pem -nodes -clcerts
Pour la production openssl pkcs12 -in apns-dist-cert.p12 -out apns-dist-cert.pem -nodes -clcerts
Renommez votre fichier P12 avec ce nom: apns-div-cert.p12 sinon au lieu de cela, vous devez entrer votre nom de fichier. Merci!!
Je ne me souviens jamais de la openssl
commande nécessaire pour créer un .pem
fichier, j'ai donc créé ce script bash pour simplifier le processus:
#!/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
Nommez-le, par exemple, signpem.sh
et enregistrez-le dans le dossier de votre utilisateur ( /Users/<username>
?). Après avoir créé le fichier, faites un chmod +x signpem.sh
pour le rendre exécutable, puis vous pouvez exécuter:
~/signpem myCertificate.p12 myCertificate.pem
Et myCertificate.pem
sera créé.