php - 如何与 PHP 建立 SSL 连接

标签 php apache ssl openssl

我需要开发一个 PHP 类来与 Apple 服务器通信,以便进行推送通知 (APNS)。我有证书 (.pem),我尝试按照在 Internet 上找到的各种教程进行操作,但尝试使用流套接字连接到 ssl://gateway.sandbox.push.apple.com:2195 时仍然遇到错误:

$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() 的“注册流套接字传输:tcp、udp、ssl、sslv3、sslv2、tls”。 我的证书很好读(PHP is_readable(certif.pem) 在文件上返回 true)

是否需要在 Apache 或 PHP 中激活其他任何东西才能使其正常工作?

最佳答案

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

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

1) 确保安装了 openssl base 和 devel 包 例如yum 安装 openssl openssl-devel

2) 编译支持 openssl 的 PHP: 即在运行配置时使用 --with-openssl 选项。

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

关于php - 如何与 PHP 建立 SSL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2997829/

相关文章:

php - 在 PHP 中从 SQL 查询结果构建 JSON 对象

php - 基本的PHP程序不过滤表

php - 将 CSS 拆分为多维数组

php - htaccess 针对不同 GET 变量的多个重写规则

apache - CentOS 6.5 + Apache 虚拟主机

php - 如何将实时 prestashop 站点移动到本地主机?

python - 如何在 python 中编辑请求以添加 TLS 设置?

ssl - 使用 Let's Encrypt 将 SSL 证书添加到 AWS EC2 实例时出现 "Unauthorized"错误

php - 带有发件人姓名的 PEAR PHP 邮件

git - 自签名 SSL 证书与 Windows Server 2012、Bonobo Git 服务器一起使用