Créer un fichier .pem pour APNS?


177

Comment créer un fichier .pem à stocker sur le serveur d'hébergement pour les données utiles APN?


1
Puis-je utiliser .p12 pour les apns au lieu de .pem?
Gajendra K Chauhan

FYI définition de .pem: serverfault.com/a/21158/193377 PEM en lui-même n'est pas un certificat, c'est juste un moyen d'encoder des données. .... il est sûr de coller dans le corps d'un e-mail car il a des lignes d'ancrage et est 7 bits propre.
AnneTheAgile

Réponses:


365

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:

  1. Lancez Keychain Access depuis votre Mac local et depuis le trousseau de connexion, filtrez par la catégorie Certificats. Vous verrez une option extensible appelée «Apple Development Push Services»
  2. Faites un clic droit sur "Apple Development Push Services"> Exportez "Apple Development Push Services ID123". Enregistrez-le en tant que apns-dev-cert.p12fichier quelque part où vous pouvez y accéder. Il n'est pas nécessaire de saisir un mot de passe.
  3. 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.


3
J'ai suivi les étapes ci-dessus et maintenant cela fonctionne.J'ai conservé le certificat et le script php sur mon serveur web local (Xampp). Je peux obtenir le jeton d'appareil et je l'utilise dans le script php. Le script php est capable de se connecter et d'envoyer des données utiles. Mais je ne parviens toujours pas à obtenir la notification PUSH. Quel est le problème ? Les notifications mettent-elles du temps à arriver ???
Biranchi

12
Sur l'accès au trousseau de Mavericks (10.9), il existe une option pour exporter au format .pem! Faites un clic droit sur le certificat "Apple Development / Production iOS Push Services" à l'intérieur de Keychain Access et choisissez de l'exporter. Changez le format de fichier en .pem - c'est fait! Également disponible en tant qu'options d'exportation: .p7b & .p12
tylerl

5
.pem est désactivé pour moi, yosemite beta7. J'ai quelques problèmes pour créer le .pem, quand je l'ouvre, il est dit que c'est pour la distribution à la place dev
Cristi Băluță

2
.pem n'est pas désactivé pour moi, mais je ne peux pas enregistrer en tant que p12. Voici à quoi ça ressemble: i.imgur.com/U2M40dU.png
FooBar

2
Pour macOS 10.14 Mojave utilisant l'application Keychain Access, vous pouvez choisir Exporter votre "Apple Push Services: com.yourBundleIdentifier certificate" au format de fichier "Privacy Enhanced Mail (.pem)" et enregistrer quand vous le souhaitez.
5uper_0leh

226

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


5
Merci, c'est le seul ici qui a fonctionné pour moi.
Erik Villegas

6
J'ai gardé ça dans mon précieux coffre-fort! : P Meilleure réponse jamais !!
Blackening le

3
Vous êtes un dieu cela fonctionne merci. VOTE HAUT. Cela devrait être la réponse car elle explique en détail comment le créer étape par étape
MNM

2
Cela devrait certainement être la réponse acceptée car la réponse de @Rahul Sharma n'a pas produit le résultat attendu, alors que cette réponse était parfaite.
Nowdeen

Merci d'avoir économisé mes heures pour vérifier la validité du certificat. Cela devrait être la réponse acceptée @Biranchi
Sourabh Sharma

59

Pas:

  1. Créer un CSR à l'aide de l'accès par porte-clés
  2. Créer un P12 à l'aide de l'accès par porte-clés à l'aide d'une clé privée
  3. ID et certificat d'application APNS

Cela vous donne trois fichiers:

  • La RSE
  • La clé privée sous forme de fichier p12 ( PushChatKey.p12)
  • Le certificat SSL, 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


22

Lancez l' application Terminal et entrez la commande suivante après l'invite

  openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes

1
Après avoir généré un p12, cela devrait être la réponse.
Stone

10

- >> 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.


Oui! Suivez simplement le tutoriel simple. Juste une simple commande openssl. Je ne sais pas si cela compte, mais j'ai exécuté la commande en SSH sur le serveur qui se connecte à APNS.
tylerl

1
@tylerl, le PEM peut être généré à partir de n'importe quelle machine - il n'est pas nécessaire qu'il s'agisse du serveur sur lequel il réside.
capikaw

Dois-je exécuter ce processus sur le serveur lui-même où le code php est déployé? ou puis-je utiliser le fichier .pem généré à partir de mon mac?
Jatin

4
Le lien est rompu en septembre 2015
Nicolas Miari



4

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:

  1. Accédez aux certificats, identifiants et profils
  2. Créez ou modifiez votre identifiant d'application.
  3. Activer les notifications push pour l'ID d'application
  4. Ajouter un certificat SSL à l'ID d'application
  5. Convertir le certificat au format PEM

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.

Accédez aux certificats, identifiants et profils

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.

  1. Connectez-vous au site Web des développeurs Apple entrez la description de l'image ici
  2. Allez dans Compte , puis Certificats, Identifiants et Profils entrez la description de l'image ici

Créer un identifiant d'application

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.

  1. Accédez aux identifiants d'application sous Identificateurs
  2. Recherchez votre application à l'aide de l'identifiant de l'offre groupée. Cela peut déjà exister.
  3. S'il n'y a pas d'ID d'application pour l'application, cliquez sur le bouton (+) pour la créer.
  4. Sélectionnez ID d'application explicite dans la section Suffixe d' ID d'application . entrez la description de l'image ici
  5. Saisissez l'identifiant de l'offre groupée pour l'application.
  6. Faites défiler vers le bas et activez les notifications push . entrez la description de l'image ici
  7. Cliquez sur Continuer .
  8. Sur l'écran suivant, cliquez sur S'inscrire pour terminer la création de l'ID d'application. entrez la description de l'image ici

Activer les notifications push pour l'ID d'application

  1. Accédez aux identifiants d'application sous Identificateurs
  2. Cliquez sur l'ID d'application pour voir les détails et faites défiler vers le bas. entrez la description de l'image ici
  3. Cliquez sur Modifier entrez la description de l'image ici
  4. Dans l'écran Paramètres d'ID d'application, faites défiler jusqu'à Notifications push entrez la description de l'image ici
  5. Cochez la case pour activer les notifications push. entrez la description de l'image ici

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.

Ajouter un certificat SSL à l'ID d'application

  1. Sous Certificat SSL de développement, cliquez sur Créer un certificat . Vous devrez également le faire plus tard pour la production.
  2. Apple vous demandera de créer une demande de signature de certificat entrez la description de l'image ici

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.

Créer un trousseau pour les informations d'identification de développement

  1. Ouvrez Keychain Access sur votre Mac
  2. Dans le menu Fichier , sélectionnez Nouveau trousseau ...
  3. Donnez à votre trousseau un nom descriptif, comme "Développement partagé" ou le nom de votre application

Créer une demande de signature de certificat (CSR)

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.

  1. Ouvrez Keychain Access sur votre Mac.
  2. Contrôle-cliquez sur le trousseau de développement dans la liste des trousseaux
  3. Sélectionnez Rendre le trousseau "Développement partagé" par défaut entrez la description de l'image ici
  4. Dans le menu Accès au trousseau , sélectionnez Assistant de certificat , puis Demander un certificat à une autorité de certification ... dans le sous-menu. entrez la description de l'image ici
  5. Lorsque l'Assistant de certificat apparaît, cochez Enregistré sur le disque . entrez la description de l'image ici
  6. Saisissez l'adresse e-mail associée à votre adhésion au programme Apple Developer Program dans le champ Adresse e-mail de l' utilisateur .
  7. Entrez un nom pour la clé dans le champ Nom commun . C'est une bonne idée d'utiliser l'ID de bundle de l'application dans le cadre du nom commun. Cela permet de savoir facilement quels certificats et clés appartiennent à quelle application.
  8. Cliquez sur continuer. L'assistant de certificat vous demandera d'enregistrer la demande de signature dans un fichier.
  9. Dans Keychain Access, redéfinissez le trousseau "login" par défaut.

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.

entrez la description de l'image ici

Télécharger la demande de signature de certificat (CSR)

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.

  1. Télécharger la demande de signature de certificat
  2. Téléchargez le certificat qu'Apple a créé à partir de la demande de signature de certificat entrez la description de l'image ici
  3. Dans Keychain Access, sélectionnez le trousseau de développement dans la liste des porte-clés
  4. Dans le menu Fichier , sélectionnez Importer des éléments ... entrez la description de l'image ici
  5. Importez le fichier de certificat téléchargé depuis Apple

Votre trousseau de développement doit maintenant afficher le certificat push avec une clé privée sous Mes certificats dans Keychain Access:

entrez la description de l'image ici

À 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.

Convertir le certificat au format PEM

  1. Dans Keychain Access, sélectionnez le trousseau de développement créé précédemment.
  2. Sélectionnez le certificat push dans Mes certificats . Il devrait y avoir une clé privée avec elle. ! [Télécharger le certificat push CER] (trousseau / importation complète.png)
  3. Dans le menu Fichier , sélectionnez Exporter les éléments ... entrez la description de l'image ici
  4. Dans le panneau de sauvegarde qui s'ouvre, sélectionnez Privacy Enhanced Mail (.pem) comme format de fichier.
  5. Enregistrez le fichier

3

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!

entrez la description de l'image ici

entrez la description de l'image ici


2

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 .cerfichier 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.


2

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!!


1

Je ne me souviens jamais de la opensslcommande nécessaire pour créer un .pemfichier, 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.shet enregistrez-le dans le dossier de votre utilisateur ( /Users/<username>?). Après avoir créé le fichier, faites un chmod +x signpem.shpour le rendre exécutable, puis vous pouvez exécuter:

~/signpem myCertificate.p12 myCertificate.pem

Et myCertificate.pemsera créé.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.