8 votes

Service de notification Push d'Apple : Installation du certificat côté serveur ?

J'ai suivi les instructions à Comment construire un serveur de fournisseurs de notifications Push d'Apple (tutoriel) dans le but de mettre en place un serveur de notification push.

Lorsque j'essaie de me connecter avec le code PHP suivant

// connect to apns server
$strAPNSUrl = 'ssl://gateway.sandbox.push.apple.com:2195';
$strAPNSCert = 'dev.pem';

// generate stream
$oStreamContext = stream_context_create();
stream_context_set_option($oStreamContext, 'ssl', 'local_cert', $strAPNSCert);

// create the socket connection
$oAPNS = stream_socket_client($strAPNSUrl, $iError, $strError, 2, STREAM_CLIENT_CONNECT, $oStreamContext);

Je reçois l'avertissement suivant

Warning: stream_socket_client() [function.stream-socket-client]: SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert

D'après les informations que j'ai pu trouver sur Google, le problème semble venir de mon certificat.

Je génère mes fichiers csr et pem sous OS X (fichiers pem selon les instructions du tutoriel). Une fois que j'ai créé dev.pem, je le télécharge chez mon hébergeur et j'essaie d'exécuter mon script php script. Est-ce la bonne façon de créer et d'"installer" le certificat ?

Je suis à court d'idées de débogage. Toute indication serait la bienvenue.

8voto

Jason George Points 5507

Chemin vers dev.pem était incorrect sur mon serveur.

Les instructions sont effectivement la manière correcte de générer le fichier .pem. Une fois créé, il peut être utilisé sur n'importe quelle machine (pas seulement celle qui l'a généré).

1voto

vfn Points 4573

Avez-vous pu utiliser le même fichier .pem sur votre serveur ? Et comme vous l'avez dit... sur n'importe quelle machine.

J'ai suivi ce tutoriel et j'ai pu envoyer des messages depuis ma machine (celle où le certificat a été généré) mais j'ai essayé de copier tous les fichiers et d'exécuter le script dans une autre machine et j'ai obtenu les mêmes erreurs que vous.

Comment avez-vous fait pour qu'il fonctionne dans une autre machine ? Avez-vous installé le fichier .pem ? Une configuration particulière ?

Cheers

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X