php - 无法通过 fsockopen 在 PHP 中建立 TLS 连接

标签 php ssl fsockopen

几天以来,我一直在尝试在我新安装的 Ubuntu 服务器上通过 fsockopen() 在 PHP 中建立到 SMTP 服务器的 TLS 连接。我几乎尝试了所有方法并在谷歌上搜索了几个小时,但我仍然无法正常工作。

PHP 代码如下所示:

$fp = fsockopen("tls://smtp.xxxx.com", 25, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
 // some other stuff
}  

输出只是 (0),即 $errstr = null 和 $errno = 0。

OpenSSL 已安装并启用:

OpenSSL support: enabled
OpenSSL Library Version: OpenSSL 0.9.8o 01 Jun 2010
OpenSSL Header Version: OpenSSL 0.9.8o 01 Jun 2010

并且注册了以下流套接字传输: tcp、udp、unix、udg、ssl、sslv3、sslv2、tls。

该端口作为控制台的 telnet 打开。

知道哪里出了问题,或者我至少可以如何获得更多调试输出?

谢谢, 马库斯

最佳答案

你的联系没有多大意义。通过使用 TLS 处理程序,您希望在传输任何数据之前建立 TLS。但是端口 25 是标准的 SMTP,它只能在您最初通过未加密的常规连接建立连接后之后建立 TLS。建立初始连接后,您可以使用 STARTTLS 命令启用 TLS,以告知 SMTP 服务器进行切换。

如果您一开始就想要 TLS,请使用端口 465,从一开始就是 ssl/tls。

关于php - 无法通过 fsockopen 在 PHP 中建立 TLS 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6708187/

相关文章:

c# - 在 LocalMachine 存储或 CurrentUser 存储中找不到证书 - 远程证书名称不匹配

Azure 应用程序网关 : 502/SNI/SSL issue? 应用服务配置

security - SSL 证书有时会停止工作

php - 为什么在PHP中发送POST请求时fsockopen有性能问题而不是fopen?

php - CURL 与 fsockopen 分块

php - fsockopen https 在 fgets 上卡住

php - 如何将分钟添加到日期时间字段然后选择 mysql 中的所有匹配项?

PHP 提示动态返回类型(基于 $class 参数)

javascript - jquery 删除所有 div,即使它们位于另一个菜单中

php - 保护 PHP 应用程序的安全