17

Sto tentando di utilizzare PyAPNS per inviare notifiche push a un'app per iPhone. Abbiamo attraversato il processo per ottenere il certificato dal centro di sviluppo di Apple, che funziona bene; tuttavia, abbiamo seguito diverse esercitazioni su come riunire il certificato e la chiave privata in un singolo file .pem, e per tutti loro, il tentativo di connettersi al server APNS utilizzando OpenSSL dal nostro server web utilizzando il certificato risultante dà questo errore:Impossibile connettersi a APNS: codice di ritorno 20 (impossibile ottenere il certificato emittente locale)

$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns.pem 
CONNECTED(00000003) 
depth=1 C = US, O = "Entrust, Inc.", OU = www.entrust.net/rpa is incorporated by reference, OU = "(c) 2009 Entrust, Inc.", CN = Entrust Certification Authority - L1C 
verify error:num=20:unable to get local issuer certificate 
verify return:0 
[...certificate chain, server certificate, etc.] 

a volte siamo in grado di digitare qualcosa alla fine di tutto questo e la connessione non si chiude fino a quando non si preme Invio, a volte no (si chiude immediatamente), ma anche quando ci sembrano avere una connessione, PyAPNS fallisce sempre quando proviamo a inviare una notifica push, dando l'errore "Fault 500: 'Impossibile stabilire la connessione al server APNS.'", che posso solo assumere per lo stesso motivo del " impossibile ottenere il certificato di emittente locale "- anche se non ho idea di quale possa essere la ragione.

I tutorial abbiamo seguito includono:

http://blog.serverdensity.com/how-to-build-an-apple-push-notification-provider-server-tutorial/

http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

http://www.nasoni.net/2010/12/02/apns-client-development-certificate/

http://thebirdytoldmeso.com/%28S%28l131v3jmvpdh5255u1jayp20%29%29/userActions/thread/Question.aspx?id=10302792

Sì, ci sono stati rimozione della password dalla chiave privata e non lo chiede quando proviamo a co nnect with OpenSSL, quindi presumibilmente quella parte funziona correttamente.

Non abbiamo idea di cosa stia succedendo. Infuriatamente, tutti questi tutorial (e Apple, a quanto pare) prendono come un dato di fatto che stai usando un Mac, mentre sto sviluppando su Windows e il server (su cui sto lavorando) è Ubuntu; il mio collega che è su un Mac ha eseguito vari prefissi dei primi passaggi prima di inviare i file risultanti a me per caricarli sul server ed eseguire i passaggi finali. Potrebbe avere qualcosa a che fare con esso, in qualche modo? O c'è un passaggio della necessaria configurazione del server che viene omesso ovunque?

+0

avete esportato la chiave con la certificato? Di solito è il primo problema –

+0

Possibile duplicato di ["verifica errore: num = 20" durante la connessione a gateway.sandbox.push.apple.com] (http://stackoverflow.com/q/23343910). – jww

risposta

1

Prova il tuo certificato con lo script php simplepush nel tutorial di raywenderlich.com e poi possiamo andare avanti da lì. A volte sembra che il certificato sia valido, ma Apple è pazza e pignola su tutte queste cose.

Errore venti penso che si tratti di un problema con la chiave privata e penso che potrebbe esserci un problema con il file di provisioning in base a quanto segue: http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=380&start=100.

Assicurarsi di esportare tutto correttamente e se necessario revocare e creare nuovi certificati. Spero che tu possa risolvere questo problema! :)

+0

Perché il voto negativo? È una risposta perfettamente accettabile. –

+0

Testare il certificato con lo script php simplepush nel tutorial di raywenderlich.com funziona bene per me ora. Forse hai ragione, la mela è pazzesca pazzesca. Dovrei andare avanti per vedere il risultato finale. – David