我怎样才能做到与PHP的SSL连接

我需要开发一个PHP类来与Apple服务器进行通信,以便执行推送通知(APNS)。 我有证书(.pem),我试图按照在互联网上find的各种教程,但我仍然收到错误尝试连接到ssl://gateway.sandbox.push.apple.com:2195与stream套接字:

$apnsHost = 'gateway.sandbox.push.apple.com'; $apnsPort = 2195; $apnsCert = 'apns-dev.pem'; $streamContext = stream_context_create(); stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert); $apns = stream_socket_client('ssl://'.$apnsHost.':'.$apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext); 

此URL上的Telnet工作,以便端口2195打开。 OpenSSL在PHP上激活,因为我用phpinfo()获得“注册stream套接字传输:tcp,udp,ssl,sslv3,sslv2,tls”。 我的证书很好读(PHP is_readable(certif.pem)在文件上返回true)

在Apache或PHP中还有其他的东西可以激活吗?

不完全是主题,但值得一提:

为了使SSL与PHP一起工作,有两件事情是重要的(如果您是从源代码编译PHP)

1)确保安装openssl base和devel软件包,例如yum install openssl openssl-devel

2)用openssl支持编译PHP:即运行config时使用–with-openssl选项。

然后,ssl将出现在phpinfo()中的“Registered Stream Socket Transports”

我的第一个评论是你不会使用Apache。 要与APNS通信,您必须将PHP脚本作为shell脚本(基本上是一个守护进程)来运行。 你需要打开与苹果的服务的套接字连接。 请参阅socket_connect() http://www.php.net/manual/en/function.socket-connect.php开始。

记住你需要保持连接打开,这意味着PHP脚本不应该在一次执行后退出,而是基本保持接近无限循环。 在每次迭代检查更改推送,写入套接字,睡眠,重复。

苹果开发者网站上有大量的信息。 从这里开始http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingWIthAPS/CommunicatingWIthAPS.html#//apple_ref/doc/uid/TP40008194-CH101-SW1

使用APNS with PHP进行的一些简单的Google搜索产生了一些结果,其中之一就是http://code.google.com/p/php-apns/ ,这看起来很有希望。

找到了 ! 问题是证书。 由于我自己没有创造,我没有调查,但我错了…

我决定自己重新正确地按照以下说明进行重新生成: 错误使用ssl证书与PHP和它的作品!

谢谢你的帮助 :)