j'essaye de faire un serveur de notification push. J'obtiens la connexion à ssl: //gateway.sandbox.Push.Apple.com: 2195 avec telnet.
telnet gateway.sandbox.Push.Apple.com 2195
Trying 17.172.232.229...
Connected to gateway.sandbox.Push-Apple.com.akadns.net.
Escape character is '^]'.
mon * .pem est ok (je l'utilise sur un autre serveur). J'utilise le même projet sur un autre serveur et cela fonctionne là-bas, mais pas le clone sur un autre serveur.
J'obtiens ces erreurs:
Warning: stream_socket_client() [function.stream-socket-client]: SSL operation failed with code 1. OpenSSL Error messages: error:14094415:SSL routines:SSL3_READ_BYTES:sslv3 alert certificate expired in /var/www/try.php on line 69
Warning: stream_socket_client() [function.stream-socket-client]: Failed to enable crypto in /var/www/try.php on line 69
Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.Push.Apple.com:2195 (Unknown error) in /var/www/try.php on line 69
Le certificat n'est PAS expiré, il fonctionne sur l'autre serveur et la date est la même.
Quelqu'un sait-il quelle pourrait être l'erreur?
Je travaille sur
Apache/2.2.9 (Debian) PHP/5.2.17-0.dotdeb.0 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g
EDIT: Il semble que l'utilisation du même certificat sur différents serveurs ne fonctionne pas. Peut-être que cela est bloqué par les serveurs Apples.
J'utilise apn_on_Rails pour cela, mais je pense que cela fonctionnera pour vous tant que vous utilisez un pem file
. J'ai résolu ce problème en téléchargeant à nouveau le certificat et le certificat intermédiaire, en régénérant le fichier de notification push pem
en utilisant ces instructions:
Une fois que vous avez le certificat de Apple pour votre application, exportez votre clé et le certificat Apple sous forme de fichiers p12. Voici une procédure pas à pas pour savoir comment procéder) :
1. Click the disclosure arrow next to your certificate in Keychain Access and select the certificate and the key.
2. Right click and choose `Export 2 items…`.
3. Choose the p12 format from the drop down and name it `cert.p12`.
Now covert the p12 file to a pem file:
$ openssl pkcs12 -in cert.p12 -out Apple_Push_notification_production.pem -nodes -clcerts
Ce type d'erreur se produit dans deux situations:
.pem
le fichier n'est pas fait correctement (comme dans mon cas).Essayez ces deux points. Vous n'obtiendrez sûrement aucune erreur.
J'ai eu le même problème mais la solution dans mon cas était ce certificat pem qui nécessitait un chemin absolu
de ici
Peut-être que votre ISP bloque les ports 2195 et 2196. J'ai eu le même problème, je leur ai demandé de l'ouvrir et cela a fonctionné pour moi.
Vous mentionnez:
J'utilise le même projet sur un autre serveur et cela fonctionne là-bas, mais pas le clone sur un autre serveur.
J'ai constaté que les certificats .pem ne sont pas transférés. Voici les étapes que j'ai suivies pour qu'une application qui fonctionne sur une machine OS X fonctionne sur une autre (je ne sais pas comment faire pour les machines non Apple):
J'espère que cela vous sera utile
Quelques découvertes aléatoires sur Internet qui pourraient aider:
Il peut s'agir d'un problème de certificat. Essayez les options de flux allow_self_signed et verify_peer pour vérifier cela.
Essayez d'utiliser explicitement sslv2: // ou sslv3: //?
Problème d'autorisation sur "/ dev/urandom"
J'ai eu un problème similaire sur ma box Linux. Pour moi, c'était le problème SELinux.
Donc, dans votre fichier/etc/selinux/config, définissez SELINUX = force sur SELINUX = désactivé. Et recommence. C'est ça.