Salta al contenuto principale

Come gestire i certificati Apple Push Notification Service

Padroneggia i certificati di Apple Push Notification Service con questa guida completa. Impara a crearli, esportarli in .p12, rinnovarli, migrare a p8 e risolvere i problemi.

Come gestire i certificati Apple Push Notification Service

I certificati di Apple Push Notification service sono validi per un anno e devono essere rinnovati annualmente nell'Apple Developer Portal per evitare interruzioni nella comunicazione con i dispositivi. Se sei responsabile di un'app Capacitor, una credenziale scaduta o revocata può bloccare le notifiche anche se l'app stessa sembra funzionare correttamente.

Il fallimento spesso emerge nel momento peggiore. Un rilascio va in produzione, una campagna è programmata e la consegna delle notifiche si interrompe all'improvviso. Il server dell'applicazione potrebbe ancora accettare i job, ma APNs può rifiutare la connessione TLS prima che un messaggio raggiunga un dispositivo. La soluzione pratica non è solo creare un altro certificato. Devi capire quale credenziale APNs usa il tuo sistema, preservare la chiave privata, pianificare il rinnovo e spostare i workload adatti all'autenticazione basata su token.

Indice dei contenuti

Perché le notifiche push smettono di funzionare

APNs si trova tra il server del tuo provider e il dispositivo Apple dell'utente. Il tuo server si autentica con Apple, invia una notifica e si affida ad APNs per instradarla all'app e al dispositivo registrati. Se la credenziale è scaduta, revocata, associata all'identità sbagliata o installata in modo errato, la richiesta può fallire prima che inizi la consegna.

Apple afferma che APNs tiene un elenco dei certificati revocati e rifiuta le connessioni TLS dai server che usano certificati presenti in quell'elenco. Questo rende la corretta gestione dei certificati un requisito per la consegna, non una preferenza amministrativa. Il server può continuare a elaborare i job di notifica localmente, mentre Apple rifiuta la connessione del provider.

Diagramma che spiega quattro motivi comuni per cui le notifiche push di Apple smettono di funzionare, tra cui scadenza del certificato e rifiuto del server.

Separare le push dell'app dalle push MDM

La prima domanda diagnostica è semplice: quale servizio stai cercando di gestire?

Percorso credenziali Come funziona Proprietario tipico
Notifiche Push Invia avvisi e altre notifiche dell'applicazione ai dispositivi degli utenti finali Sviluppo mobile o backend
MDM Push Permette a una piattaforma di device management di comunicare con dispositivi Apple gestiti IT, endpoint o amministrazione della mobilità aziendale

Queste credenziali non sono intercambiabili. Una piattaforma MDM può perdere il contatto con i dispositivi registrati quando la sua credenziale MDM push scade, mentre il backend di un'app può perdere la consegna delle notifiche perché la sua credenziale App Push non è valida. Trattare entrambe come un unico problema di "certificato push Apple" orienta il troubleshooting nella direzione sbagliata.

Per i team Capacitor e Ionic, il percorso rilevante per gli alert rivolti all'utente è generalmente Notifiche Push. L'app ha comunque bisogno della capability Push Notifications, della firma corretta, della registrazione del dispositivo e di un backend che invii tramite l'ambiente APNs appropriato. Se il tuo team distribuisce anche asset web over-the-air, tieni il workflow di rilascio separato dall'autenticazione push. La documentazione del plugin notifiche Capacitor copre l'integrazione lato applicazione, mentre le credenziali APNs vanno nella configurazione del provider.

Parti dal rifiuto, non dalla UI

Controlla la risposta APNs dal server del tuo provider prima di modificare il testo delle notifiche o ricostruire l'app. Verifica poi il bundle identifier, l'identità della credenziale, l'ambiente e lo stato del certificato. Un problema di permessi delle notifiche influisce sulla capacità dell'utente di vedere gli alert, ma non spiega un rifiuto TLS da parte di APNs.

Se l'errore è apparso dopo un rilascio, confronta firma ed entitlements della nuova build con quelli della build precedente. Se è apparso senza modifiche all'app, controlla prima scadenza e revoca del certificato, modifiche al trust-store e segreti di deployment. Per un percorso di implementazione più ampio, consulta questa guida su Configurazione delle notifiche push di Expo.

Creazione e download del certificato APNs

Il rollout delle notifiche push può fallire prima dell'invio della prima notifica se il certificato è emesso per l'App ID errato o se la chiave privata resta su un altro Mac. Il workflow di Apple si divide in due parti: il tuo computer crea una Richiesta di firma del certificato, ovvero una CSR, e Apple la firma per l'App ID selezionato. La CSR non è la credenziale del server: collega il certificato emesso alla chiave privata creata localmente.

Prepara l'App ID

Accedi al portale Apple Developer e apri Certificati, Identificatori e Profili. Seleziona Identificatori, scegli il bundle identifier dell'app e apri la sua configurazione. Conferma che Notifiche push sia abilitato prima di emettere qualsiasi cosa.

Le credenziali APNs sono legate all'identità dell'app. Non scegliere un bundle identifier vicino con un nome simile. Configura ogni applicazione separatamente ed emetti la credenziale corrispondente.

Sul Mac che conserverà la chiave, apri Accesso Portachiavi e crea il CSR, oppure usa gli strumenti per i certificati approvati dalla tua organizzazione. Mantieni il file della richiesta e la chiave privata sotto lo stesso controllo. Se un altro amministratore crea il CSR, potrebbe detenere la chiave privata necessaria in seguito per un bundle server utilizzabile.

Un monitor che mostra un'interfaccia a riga di comando Linux utilizzata per generare certificati SSL.

Emetti il certificato firmato

In Certificati, seleziona l'opzione per il certificato Apple Push Notification service. Scegli l'App ID, carica il CSR e invia la richiesta. Scarica il certificato rilasciato da Apple.

Fai doppio clic sul file scaricato sul Mac che possiede la chiave privata. Dovrebbe installarsi in Accesso Portachiavi, dove puoi verificare il certificato e la relativa chiave privata. Un certificato importato senza quella chiave non può fornire le credenziali complete di cui ha bisogno il tuo backend.

Usa una convenzione di denominazione che registri l'identità dell'applicazione, l'ambiente, il proprietario e i dettagli di scadenza. Conserva il certificato originale, le informazioni di proprietà del CSR e i dettagli dell'account del portale nel sistema di credenziali del tuo team. La cartella Download di uno sviluppatore o il suo laptop personale non sono un backup operativo.

Il certificato supporta solo una parte della consegna. L'app deve registrarsi per le notifiche remote, il server deve conservare il device token risultante e il provider deve inviare con il topic e l'ambiente corrispondenti. Mantieni queste dipendenze nello stesso runbook. Per la configurazione client-side, consulta la Guida all'integrazione delle notifiche Capacitor. Tratta questo certificato come una credenziale gestita, non come un download una tantum, poiché l'export successivo, la migrazione dei token, il rinnovo e il recupero dipendono dal sapere chi ne controlla la chiave.

Esportare il certificato in una chiave privata

Un certificato Apple scaricato non è automaticamente pronto per un servizio Node.js o un provider di push gestito. Il server ha bisogno del certificato e della relativa chiave privata, comunemente impacchettati come PKCS#12 .p12 file.

Apri Accesso Portachiavi sul Mac in cui hai installato il certificato. Cerca il certificato APNs, espandilo o ispezionalo e individua la chiave privata con identità e scadenza corrispondenti. Seleziona insieme certificato e chiave privata, quindi usa l'azione di export per salvare un .p12 file.

Valida il bundle prima del deployment

Assegna all'export una password robusta. La password protegge la chiave privata all'interno del bundle, quindi non inserirla in un repository, in un ticket, in un messaggio di chat o in un build log. Carica il file e la password tramite il tuo sistema di secret management, poi concedi l'accesso solo al servizio che invia le notifiche.

Regola pratica: Un .p12 un file senza la chiave privata corrispondente non è una credenziale completa del provider.

Prima dell'uso in produzione, testa il bundle in un ambiente controllato. Conferma che il tuo backend possa caricare il file, stabilire la connessione APNs e restituire errori strutturati quando Apple rifiuta una richiesta. Se un provider come Capgo richiede una credenziale push iOS, carica il .p12 e la relativa password tramite l'apposita configurazione dei secret, invece di incorporare uno dei due valori nel code dell'applicazione.

Il formato evidenzia anche la debolezza del vecchio workflow. Devi conservare la chiave privata originale, ripetere un export manuale, proteggere il file e sostituire il secret di deployment al momento del rinnovo. I team che gestiscono più app possono facilmente perdere traccia di quale bundle corrisponda a quale App ID.

Usa gestione sicura dei secret nelle pipeline CI/CD per controllare chi può leggere o sostituire la credenziale. Mantieni un audit trail per gli upload e le rotazioni, ma non loggare mai la chiave privata o la .p12 password.

Per nuovi sviluppi backend, valuta se l'autenticazione tramite certificato sia ancora appropriata. Le integrazioni esistenti potrebbero richiedere .p12, ma l'autenticazione tramite token di solito elimina la sostituzione annuale del certificato dalla connessione con il provider. Questo non elimina la governance delle credenziali: cambia ciò che devi proteggere e ruotare.

Migrare alla nuova autenticazione basata su token

Apple ha spostato l'autenticazione APNs verso provider token, comunemente chiamati workflow p8. Invece di presentare un certificato e una chiave privata per un'identità TLS a lungo termine, il tuo provider firma i token di autenticazione con una Apple Push Notification service Authentication Key.

Crea la chiave nel portale Apple Developer sotto Certificati, Identificatori e Profili, quindi apri Chiavi e registra una chiave di autenticazione APNs. Scarica il .p8 file e annota l'ID chiave e l'ID team associati nel tuo secret store. Tratta il file scaricato come un segreto di firma ad alto valore.

Effettua la migrazione in modo consapevole

Non deviare il traffico di produzione sostituendo un file in un ambiente non testato. Implementa l'autenticazione tramite token accanto al percorso certificato esistente, valida il comportamento in sandbox e in produzione e confronta le risposte di APNs. Poi apporta la modifica alla configurazione del provider durante un deployment controllato.

La migrazione elimina i passaggi di rinnovo del certificato e di export da Keychain dal percorso di invio, ma il tuo team ha ancora bisogno di un modello di ownership chiaro. Decidi chi può creare, revocare e distribuire le chiavi. Limita l'accesso al servizio backend che firma i token del provider e assicurati che esista un processo di sostituzione di emergenza prima che la chiave attuale diventi non disponibile.

Per un'app Capacitor, il client richiede comunque la corretta registrazione delle notifiche e i relativi entitlements. La migrazione modifica principalmente l'autenticazione server-to-APNs, non la registrazione del device token code. Il tuo backend deve continuare ad associare i token all'applicazione e all'ambiente corretti.

Uno sviluppatore che scrive codice su un laptop, con una tazza di caffè e una pianta sul tavolo.

Sapere quando i certificati servono ancora

Alcuni strumenti enterprise e integrazioni consolidate espongono ancora configurazioni basate su certificati. Non forzare una migrazione a p8 finché il sistema ricevente non lo supporta e il tuo team non ha testato l'intero percorso. Mantieni le credenziali legacy protette durante la transizione, ma non creare nuove dipendenze da esse quando l'autenticazione tramite token è adatta.

Se hai bisogno di comprendere il flusso applicativo circostante, consulta Notifiche push con Ionic e Capacitor tramite Firebase. Firebase può fornire un layer di delivery per l'app, ma le credenziali Apple, gli entitlement, la registrazione e le risposte APNs richiedono comunque una configurazione mirata.

Rinnovo e gestione del ciclo di vita dei certificati

Considera un certificato APNs come una dipendenza di produzione con scadenza dal giorno in cui lo crei. Apple indica che questi certificati sono validi per un anno dalla creazione e devono essere rinnovati prima della scadenza per mantenere la comunicazione con i dispositivi. Apple avverte inoltre che il mancato rinnovo può richiedere agli utenti di registrare di nuovo i dispositivi iOS, iPadOS e Mac con APNs e causare interruzioni del servizio. Consulta la documentazione Apple sul rinnovo dei certificati per le notifiche push.

La procedura di rinnovo è precisa:

  1. Genera un nuovo CSR: Crea la richiesta tramite il tuo workflow approvato e conserva il materiale chiave associato.
  2. Usa l'Apple ID originale: Accedi con lo stesso Apple ID utilizzato per creare il certificato esistente.
  3. Seleziona il certificato in scadenza: Verifica App ID, Subject DN, UID e dettagli di scadenza prima di selezionare Rinnova.
  4. Carica il CSR: Invia la nuova richiesta nel portale certificati Apple Push.
  5. Scarica e reinstalla: Recupera il certificato rinnovato .pem, installalo dove è disponibile la chiave privata ed esporta un sostituto .p12 se richiesto dal tuo provider.
  6. Deploy e test: Aggiorna il segreto del server, invia una notifica controllata ed esamina la risposta APNs.

Confronto tra i formati dei provider

Requisito Workflow dei certificati Workflow dei token
Segreto primario Certificato e chiave privata .p8 Chiave di autenticazione
Problemi di rinnovo La scadenza del certificato richiede sostituzioni ricorrenti Nessuna sostituzione annuale del certificato
Attività di deployment Installa, associa, esporta e carica Salva la chiave di firma e configura la generazione del token
Rischio principale di errore Certificato errato, chiave privata mancante, scadenza o revoca Chiave di autenticazione persa, esposta o revocata

L'ecosistema di certificati di Apple ha inoltre richiesto interventi programmati sulla catena di fiducia. Apple ha annunciato aggiornamenti dei certificati server APNs per sandbox il 20 gennaio 2025 e per produzione il 24 febbraio 2025, richiedendo che i trust store includano il certificato SHA-2 Root USERTrust RSA Certification Authority certificato. Consulta annuncio di Apple sui certificati server APNs e includi la gestione dei trust store nella checklist della tua piattaforma.

Usa un calendario di rinnovo condiviso, un responsabile nominato e un runbook di deployment. La documentazione sulla gestione dei certificati di Capgo può affiancare quel runbook per i team che gestiscono le credenziali di delivery iOS insieme al processo di rilascio mobile.

Troubleshooting e gestione delle credenziali perse

L'incidente difficile non è sempre un avviso di scadenza. È la mattina in cui l'amministratore che ha creato il certificato ha lasciato l'azienda, la chiave privata esiste solo su un vecchio Mac, o un certificato è stato revocato durante un tentativo di pulizia. Il flusso di rinnovo standard dipende dall'Apple ID originale e dall'identità corretta del certificato, quindi l'accesso e la provenienza contano quanto il file stesso.

Inizia classificando il guasto:

  • Certificato scaduto: Genera un sostituto tramite l'account originale, reinstallalo con la chiave privata corrispondente, aggiorna il provider e testa la delivery. Se la comunicazione con i dispositivi è già stata interrotta, segui le indicazioni di recupero di Apple invece di assumere che una sostituzione lato server ripristini istantaneamente tutti i dispositivi.
  • Certificato revocato: Smetti di considerare la vecchia credenziale come recuperabile. Apple rifiuta le connessioni TLS dai server che utilizzano certificati revocati, quindi crea un sostituto valido e rimuovi il segreto revocato dai deployment attivi. Verifica chi l'ha revocato e se altri sistemi hanno copiato la stessa credenziale.
  • Password .p12 persa: Un file di certificato senza la password utilizzabile potrebbe non essere operativamente disponibile. Recupera il backup approvato o emetti un certificato sostitutivo, invece di indebolire i controlli sui segreti di produzione.
  • Chiave privata persa: Scaricare di nuovo il certificato pubblico non ricrea la chiave privata. Crea un nuovo CSR su una macchina controllata ed emetti una credenziale sostitutiva.
  • Accesso Apple ID perso: Verifica se l'organizzazione può recuperare l'account tramite i propri processi di identità e deployment. Apple indirizza il supporto per i certificati APNs creati tramite il portale pertinente a Supporto Deployment Programs.

Il recupero richiede l'identità, non solo un nome file. Prima che si verifichi un incidente, annota l'ID Apple del proprietario, l'App ID, l'identità del certificato, la posizione della chiave privata, la configurazione del provider e la procedura di sostituzione.

Crea una rete di sicurezza operativa

Metti i certificati e le .p8 chiavi in un vault condiviso con controllo degli accessi. Conserva la .p12 password separatamente dal file, limita l'accesso alla produzione e documenta l'esatto account del portale utilizzato per il rinnovo. Il tuo sistema CI/CD dovrebbe iniettare i segreti al momento del deployment ed eseguire un health check che rilevi gli errori di autenticazione prima che gli utenti segnalino notifiche mancanti.

Mantieni la vecchia credenziale disponibile durante una sostituzione controllata quando la piattaforma lo consente, ma non lasciare segreti obsoleti attivi indefinitamente. Testa una sostituzione nello stesso percorso backend usato in produzione, incluso l'ambiente del provider, il bundle identifier e lo store dei device token.

Quando un'interruzione si è già verificata, conserva i corpi delle risposte APNs e i timestamp, identifica la prima richiesta rifiutata e confronta il segreto di deployment prima e dopo l'incidente. Non ritentare indefinitamente contro una credenziale non valida. Correggi prima il problema di identità o autenticazione, poi invia una piccola notifica di verifica a un dispositivo di test noto.

Capgo può archiviare e configurare le credenziali push iOS come parte di un workflow di notifiche Capacitor, mentre il tuo team resta responsabile dell'accesso all'account Apple, della custodia dei segreti e delle decisioni di rinnovo. Visita Capgo per valutare come i suoi strumenti di delivery mobile si integrino con il ciclo di vita delle credenziali APNs e il processo di release.

Frequently asked questions

I certificati SSL client per le notifiche push vengono trasferiti quando un'app viene trasferita a un altro account Apple?

No. La documentazione Apple sul trasferimento delle app afferma che i certificati SSL client per le notifiche push non vengono trasferiti. Dopo il trasferimento, il team ricevente deve creare nuovi certificati APNs o, meglio ancora, usare una chiave .p8 basata su token del proprio account, quindi aggiornare il provider push. Vedi migrazione all'autenticazione basata su token.

Live updates per le app Capacitor

Quando un bug nel web-layer è live, rilascia la fix tramite Capgo invece di aspettare giorni l'approvazione degli store. Gli utenti ricevono l'update in background, mentre le modifiche native restano nel normale processo di review.

Ultimi articoli dal blog

Capgo ti offre gli insight migliori che ti servono per creare un'app mobile davvero professionale.