Creazione del file .pem per APNS?


177

Come posso creare un file .pem da archiviare nel server di hosting per i dati del payload APN?


1
Posso usare .p12 per apns invece di .pem?
Gajendra K Chauhan,

Definizione FYI di .pem: serverfault.com/a/21158/193377 PEM da solo non è un certificato, è solo un modo di codificare i dati. .... è sicuro incollare nel corpo di un messaggio di posta elettronica perché ha linee di ancoraggio ed è pulito a 7 bit.
AnneTheAgile,

Risposte:


365

Ecco cosa ho fatto, da: blog.boxedice.com e "iPhone Advanced Projects" capitolo 10 di Joey Pezzillo.

Con aps_developer_identity.cer nel portachiavi:

  1. Avvia Accesso Portachiavi dal tuo Mac locale e dal portachiavi di accesso, filtra per categoria Certificati. Vedrai un'opzione espandibile chiamata "Apple Development Push Services"
  2. Fare clic con il tasto destro su "Servizi push di sviluppo Apple"> Esporta "ID servizi push di sviluppo Apple ID123". Salvalo come apns-dev-cert.p12file da qualche parte per accedervi. Non è necessario inserire una password.
  3. Il comando successivo genera il certificato nel Terminale di Mac per il formato PEM (Privacy Enhanced Mail Security Certificate):

    openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts

Sul server impostare l'autorizzazione del file per questa chiave non crittografata utilizzando chmod 400.


3
Ho seguito i passaggi precedenti e ora funziona, ho conservato il certificato e lo script php sul mio server Web locale (Xampp). Sono in grado di ottenere il token del dispositivo e lo sto usando nello script php. Lo script php è in grado di connettersi e inviare dati sul payload. Ma comunque non riesco a ricevere la notifica PUSH. Qual è il problema ? Le notifiche impiegano tempo per raggiungere ???
Biranchi,

12
Su Mavericks (10.9's) Keychain Access, c'è un'opzione per esportare come .pem! Fai clic con il pulsante destro del mouse sul "Certificato Apple Push / Production iOS Push Services all'interno di Keychain Access e scegli di esportarlo. Cambia il formato del file in .pem - fatto! Disponibile anche come opzione di esportazione: .p7b & .p12
tylerl

5
.pem è disabilitato per me, yosemite beta7. ho qualche problema con la creazione di .pem, quando lo apro dice che è per la distribuzione invece dev
Cristi Băluță

2
.pem non è disabilitato per me, ma non riesco a salvare come p12. Ecco come appare: i.imgur.com/U2M40dU.png
FooBar

2
Per macOS 10.14 Mojave utilizzando l'app Accesso Portachiavi puoi scegliere Esporta il tuo "Apple Push Services: certificato com.yourBundleIdentifier" nel formato file "Privacy Enhanced Mail (.pem)" e salvalo quando vuoi.
5uper_0leh,

226

Fase di sviluppo:

Passaggio 1: Creare il certificato .pem dal certificato .p12
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

Passaggio 2: creare la chiave .pem dalla chiave .p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

Passaggio 3 (Facoltativo): se si desidera rimuovere la passphrase richiesta nel secondo passaggio
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

Passaggio 4: Ora dobbiamo unire la chiave .pem e la certificazione .pem per ottenere lo sviluppo .pem necessario per le notifiche push nella fase di sviluppo dell'app.

Se è stato eseguito il 3 ° passaggio, eseguire:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

Se il 3 ° passaggio non è stato eseguito, eseguire:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem

Passaggio 5: verificare la validità del certificato e la connettività agli APNS

Se è stato eseguito il 3 ° passaggio, eseguire:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem

Se il 3 ° passaggio non è stato eseguito, eseguire:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem

Fase di produzione:

Passaggio 1: Creare il certificato .pem dal certificato .p12
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12

Passaggio 2: creare la chiave .pem dalla chiave .p12
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12

Passaggio 3 (Facoltativo): se si desidera rimuovere la passphrase richiesta nel secondo passaggio
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem

Passaggio 4: Ora dobbiamo unire la chiave .pem e la certificazione .pem per ottenere la produzione .pem necessaria per le notifiche push nella fase di produzione dell'app.

Se è stato eseguito il 3 ° passaggio, eseguire:
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem

Se il 3 ° passaggio non è stato eseguito, eseguire:
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem

Passaggio 5: verificare la validità del certificato e la connettività agli APNS.

Se è stato eseguito il 3 ° passaggio, eseguire:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem

Se il 3 ° passaggio non è stato eseguito, eseguire:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem


5
Grazie, questo è l'unico qui che ha funzionato per me.
Erik Villegas,

6
Ho salvato questo nel mio prezioso caveau! : P La più grande risposta di sempre !!
Blackening

3
Sei un dio che funziona grazie. VOTARE. Questa dovrebbe essere la risposta perché approfondisce come crearla passo dopo passo
MNM

2
Certamente questa dovrebbe essere la risposta accettata perché la risposta di @Rahul Sharma non ha prodotto il risultato atteso, mentre questa risposta è stata perfetta.
Oggi

Grazie hai risparmiato le mie ore per verificare la validità del certificato. Questa dovrebbe essere la risposta accettata @Biranchi
Sourabh Sharma,

59

passi:

  1. Crea un CSR usando l'accesso alla catena chiave
  2. Creare una P12 utilizzando l'accesso alla catena chiave utilizzando la chiave privata
  3. ID app e certificato APNS

Questo ti dà tre file:

  • Il CSR
  • La chiave privata come file p12 ( PushChatKey.p12)
  • Il certificato SSL, aps_development.cer

Vai alla cartella in cui hai scaricato i file, nel mio caso il Desktop:

$ cd ~/Desktop/

Converti il ​​file .cer in un file .pem:

$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem

Converti il ​​file .p12 della chiave privata in un file .pem:

$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12

Inserisci la password di importazione:

MAC verified OK Enter PEM pass phrase: Verifying - Enter PEM pass phrase:

Devi prima inserire la passphrase per il file .p12 in modo che openssl possa leggerlo. Quindi è necessario inserire una nuova passphrase che verrà utilizzata per crittografare il file PEM. Anche in questo tutorial ho usato "pushchat" come passphrase PEM. Dovresti scegliere qualcosa di più sicuro. Nota: se non si inserisce una passphrase PEM, openssl non darà un messaggio di errore ma il file .pem generato non avrà la chiave privata al suo interno.

Infine, combina il certificato e la chiave in un singolo file .pem:

$ cat PushChatCert.pem PushChatKey.pem > ck.pem


22

Avviare l' applicazione Terminale e immettere il seguente comando dopo il prompt

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

1
Dopo aver generato una p12, questa dovrebbe essere la risposta.
Stone,

10

- >> Tutorial di Apple << - è l'unico set di istruzioni funzionante che ho trovato. È semplice e posso confermare che funziona perfettamente sia su un server php di linux che su un server php di windows.

Puoi trovare il processo di creazione di pem in 5 passaggi proprio in fondo alla pagina.


Sì! Segui il semplice tutorial. Solo un semplice comando openssl. Non so se è importante, ma ho eseguito il comando SSH nel server che si connette ad APNS.
tylerl,

1
@tylerl, il PEM può essere generato da qualsiasi macchina - non deve essere il server in cui risiederà.
capikaw,

Devo eseguire questo processo sul server stesso in cui è distribuito il codice php? o posso usare il file .pem generato dal mio mac?
Jatin,

4
Il collegamento è interrotto a partire da settembre 2015
Nicolas Miari,



4

NOTA: per eseguire una di queste attività devi avere il ruolo di agente di squadra o amministratore in App Store Connect. Se non fai parte di un team in App Store Connect, probabilmente questo non ti riguarda.

L'invio di notifiche push a un'applicazione iOS richiede la creazione di chiavi di crittografia. In passato questo era un processo ingombrante che utilizzava chiavi e certificati SSL. Ogni certificato SSL era specifico per una singola applicazione iOS. Nel 2016 Apple ha introdotto un nuovo meccanismo di chiave di autenticazione che è più affidabile e più facile da usare. Le nuove chiavi di autenticazione sono più flessibili, semplici da mantenere e si applicano a più che sull'app iOS.

Anche se sono passati anni dall'introduzione delle chiavi di autenticazione, non tutti i servizi le supportano. FireBase e Amazon Pinpoint supportano le chiavi di autenticazione. Amazon SNS, Urban Airship, Twilio e LeanPlum no. Molti pacchetti software open source non supportano ancora le chiavi di autenticazione.

Per creare il certificato SSL richiesto ed esportarlo come file PEM contenente chiavi pubbliche e private:

  1. Passa a Certificati, identificatori e profili
  2. Crea o modifica il tuo ID app.
  3. Abilita notifiche push per l'ID app
  4. Aggiungi un certificato SSL all'ID app
  5. Converti il ​​certificato in formato PEM

Se hai già il certificato SSL impostato per l'app nel sito Web Apple Developer Center, puoi passare a Converti il ​​certificato in formato PEM. Tieni presente che potresti riscontrare problemi se non disponi anche della chiave privata generata sul Mac che ha creato la richiesta di firma caricata su Apple.

Continua a leggere per vedere come evitare di perdere traccia di quella chiave privata.

Passa a Certificati, identificatori e profili

Xcode non controlla i certificati o le chiavi per le notifiche push. Per creare chiavi e abilitare le notifiche push per un'app è necessario visitare il sito Web Apple Developer Center. La sezione Certificati, identificatori e profili dell'account controlla ID app e certificati.

Per accedere a certificati e profili è necessario disporre di un abbonamento al Programma Apple Developer Program a pagamento o far parte di un Team che lo fa.

  1. Accedi al sito Web di Apple Developer inserisci qui la descrizione dell'immagine
  2. Vai su Account , quindi Certificati, Identificatori e Profili inserisci qui la descrizione dell'immagine

Crea un ID app

Le app che utilizzano le notifiche push non possono utilizzare ID app jolly o profili di provisioning. Ogni app richiede di impostare un record ID app nel portale del Centro per sviluppatori Apple per abilitare le notifiche push.

  1. Vai a ID app in Identificatori
  2. Cerca la tua app utilizzando l'identificatore del bundle. Potrebbe già esistere.
  3. Se non esiste un ID app esistente per l'app, fare clic sul pulsante (+) per crearlo.
  4. Seleziona ID app esplicito nella sezione Suffisso ID app . inserisci qui la descrizione dell'immagine
  5. Immettere l'identificatore del bundle per l'app.
  6. Scorri verso il basso e abilita le notifiche push . inserisci qui la descrizione dell'immagine
  7. Fai clic su Continua .
  8. Nella schermata successiva fai clic su Registra per completare la creazione dell'ID app. inserisci qui la descrizione dell'immagine

Abilita notifiche push per l'ID app

  1. Vai a ID app in Identificatori
  2. Fai clic sull'ID app per visualizzare i dettagli e scorrere verso il basso. inserisci qui la descrizione dell'immagine
  3. Fai clic su Modifica inserisci qui la descrizione dell'immagine
  4. Nella schermata Impostazioni ID app scorrere verso il basso fino a Notifiche push inserisci qui la descrizione dell'immagine
  5. Seleziona la casella di controllo per abilitare le notifiche push. inserisci qui la descrizione dell'immagine

La creazione di certificati SSL per le notifiche push è un processo di diverse attività. Ogni attività ha diversi passaggi. Tutti questi sono necessari per esportare le chiavi in ​​formato P12 o PEM. Rivedere i passaggi prima di procedere.

Aggiungi un certificato SSL all'ID app

  1. In Sviluppo certificato SSL fare clic su Crea certificato . Dovrai farlo in seguito anche per la produzione.
  2. Apple ti chiederà di creare una richiesta di firma del certificato inserisci qui la descrizione dell'immagine

Per creare un certificato dovrai effettuare una Richiesta di firma certificato (CSR) su un Mac e caricarlo su Apple.

Successivamente, se devi esportare questo certificato come file pkcs12 (aka p12), dovrai utilizzare il portachiavi dallo stesso Mac . Quando viene creata la richiesta di firma Keychain Access genera un set di chiavi nel portachiavi predefinito. Queste chiavi sono necessarie per lavorare con il certificato che Apple creerà dalla richiesta di firma.

È buona norma disporre di un portachiavi separato specifico per le credenziali utilizzate per lo sviluppo. Se lo fai, assicurati che questo portachiavi sia impostato come predefinito prima di utilizzare Assistente certificato.

Crea un portachiavi per le credenziali di sviluppo

  1. Apri Accesso portachiavi sul tuo Mac
  2. Nel menu File selezionare Nuovo portachiavi ...
  3. Assegna al tuo portachiavi un nome descrittivo, come "Sviluppo condiviso" o il nome della tua applicazione

Creare una richiesta di firma certificato (CSR)

Durante la creazione della richiesta di firma certificato, l'Assistente certificato genera due chiavi di crittografia nel portachiavi predefinito. È importante rendere predefinito il portachiavi di sviluppo in modo che le chiavi siano nel portachiavi giusto.

  1. Apri Accesso portachiavi sul tuo Mac.
  2. Fai clic tenendo premuto il tasto Ctrl sul portachiavi di sviluppo nell'elenco dei portachiavi
  3. Seleziona Rendi predefinito il portachiavi "Sviluppo condiviso" inserisci qui la descrizione dell'immagine
  4. Dal menu Accesso portachiavi selezionare Assistente certificato , quindi Richiedi un certificato da un'autorità di certificazione ... dal sottomenu. inserisci qui la descrizione dell'immagine
  5. Quando viene visualizzato Assistente certificato, selezionare Salva su disco . inserisci qui la descrizione dell'immagine
  6. Inserisci l'indirizzo email associato al tuo abbonamento al Programma per sviluppatori Apple nel campo Indirizzo email utente .
  7. Immettere un nome per la chiave nel campo Nome comune . È una buona idea utilizzare l'ID bundle dell'app come parte del nome comune. Questo rende facile dire quali certificati e chiavi appartengono a quale app.
  8. Clicca continua. Certificate Assistant richiederà di salvare la richiesta di firma in un file.
  9. In Keychain Access, imposta nuovamente il portachiavi "login" come predefinito.

La creazione della richiesta di firma ha generato una coppia di chiavi. Prima di caricare la richiesta di firma, verificare che il portachiavi di sviluppo abbia le chiavi. I loro nomi saranno gli stessi del nome comune usato nella richiesta di firma.

inserisci qui la descrizione dell'immagine

Carica la richiesta di firma del certificato (CSR)

Una volta creata la richiesta di firma del certificato, caricala nel Centro per sviluppatori Apple. Apple creerà il certificato di notifica push dalla richiesta di firma.

  1. Carica la richiesta di firma del certificato
  2. Scarica il certificato creato da Apple dalla richiesta di firma del certificato inserisci qui la descrizione dell'immagine
  3. In Accesso portachiavi selezionare il portachiavi di sviluppo dall'elenco dei portachiavi
  4. Dal menu File selezionare Importa elementi ... inserisci qui la descrizione dell'immagine
  5. Importa il file del certificato scaricato da Apple

Il tuo portachiavi di sviluppo dovrebbe ora mostrare il certificato push con una chiave privata in I miei certificati in Accesso portachiavi:

inserisci qui la descrizione dell'immagine

A questo punto è necessario eseguire il backup del portachiavi di sviluppo. Molti team mantengono i loro certificati push su unità USB sicure, si impegnano nel controllo interno della versione o utilizzano una soluzione di backup come Time Machine. Il portachiavi di sviluppo può essere condiviso tra diversi membri del team perché non contiene credenziali per la firma di codici personali.

I file dei portachiavi si trovano in ~/Library/Keychains.

Alcuni servizi push di terze parti richiedono certificati in formato PEM (Privacy Enhanced Mail), mentre altri richiedono gli standard n. 12 di crittografia a chiave pubblica (PKCS12 o P12). Il certificato scaricato da Apple può essere utilizzato per esportare certificati in questi formati, ma solo se hai conservato la chiave privata.

Converti il ​​certificato in formato PEM

  1. In Accesso portachiavi selezionare il portachiavi di sviluppo creato in precedenza.
  2. Seleziona il certificato push in I miei certificati . Dovrebbe esserci una chiave privata con essa. ! [Scarica certificato push CER] (keychain / import complete.png)
  3. Dal menu File selezionare Esporta elementi ... inserisci qui la descrizione dell'immagine
  4. Nel pannello di salvataggio che si apre, seleziona Privacy Enhanced Mail (.pem) come formato di file.
  5. Salva il file

3

Suggerirei una soluzione molto più semplice. Usa Certifire .
Certifire è un'applicazione macOS che genera certificati di notifica push Apple con un solo clic in un paio di secondi.

Ecco i passaggi:
1. Scarica l'app.
2. Accedi utilizzando le credenziali del tuo account sviluppatore Apple.
3. Scegli l'App-ID
4. Fai clic sul pulsante "Genera"
5. Il gioco è fatto!

Otterrai i certificati APN in formato .pem e in formato .p12. Ancora di più, avrai anche combinato .pem e .p12 (key + cert)!
Molto di più, otterrai anche versioni senza passphrase di tutti questi certificati!

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


2

È così che ho fatto su Windows 7, dopo aver installato OpenSSL (il collegamento va al programma di installazione di Win32, scegliere l'ultima versione e non la versione light).

Con questo metodo hai solo bisogno del .cerfile scaricato da Apple.

c:\OpenSSL-Win32\bin\openssl.exe x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM

questo creerà un file al quale dovrai aggiungere anche la tua chiave privata.

-----
INIZIA TASTO PRIVATO ----- MIIEuwIBADANBgkqhk .... ecc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
----- END PRIVATE KEY -----
-----
INIZIA ATTESTATO ----- AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
----- END CERTIFICATE -----

Questo è tutto.


2

C'è un modo più semplice per creare il file .Pem se hai già un file p12 apns nel tuo accesso alla catena chiave.

Apri il terminale e inserisci il comando seguente:

Per Devlopment openssl pkcs12 -in apns-div-cert.p12 -out apns-div-cert.pem -nodes -clcerts

Per Production openssl pkcs12 -in apns-dist-cert.p12 -out apns-dist-cert.pem -nodes -clcerts

Rinomina il tuo file P12 con questo nome: apns-div-cert.p12 altrimenti invece devi inserire il tuo nome file. Grazie!!


1

Non ricordo mai il opensslcomando necessario per creare un .pemfile, quindi ho creato questo script bash per semplificare il processo:

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

Denominalo, ad esempio, signpem.she salvalo nella cartella del tuo utente ( /Users/<username>?). Dopo aver creato il file, eseguire un chmod +x signpem.shper renderlo eseguibile e quindi è possibile eseguire:

~/signpem myCertificate.p12 myCertificate.pem

E myCertificate.pemsarà creato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.