Come posso creare un file .pem da archiviare nel server di hosting per i dati del payload APN?
Come posso creare un file .pem da archiviare nel server di hosting per i dati del payload APN?
Risposte:
Ecco cosa ho fatto, da: blog.boxedice.com e "iPhone Advanced Projects" capitolo 10 di Joey Pezzillo.
Con aps_developer_identity.cer nel portachiavi:
apns-dev-cert.p12
file da qualche parte per accedervi. Non è necessario inserire una password.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.
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
passi:
Questo ti dà tre file:
PushChatKey.p12
)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
Avviare l' applicazione Terminale e immettere il seguente comando dopo il prompt
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
- >> 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.
Puoi dare un'occhiata qui. Ho il processo dettagliato descritto con immagini, fin dalla creazione del certificato, dalla chiave dell'app al profilo di provisioning, fino alla pem. http://docs.moengage.com/docs/apns-certificate-pem-file
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:
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.
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.
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.
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.
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.
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.
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.
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.
Il tuo portachiavi di sviluppo dovrebbe ora mostrare il certificato push con una chiave privata in I miei certificati in Accesso portachiavi:
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.
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!
È 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 .cer
file 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.
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!!
Non ricordo mai il openssl
comando necessario per creare un .pem
file, 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.sh
e salvalo nella cartella del tuo utente ( /Users/<username>
?). Dopo aver creato il file, eseguire un chmod +x signpem.sh
per renderlo eseguibile e quindi è possibile eseguire:
~/signpem myCertificate.p12 myCertificate.pem
E myCertificate.pem
sarà creato.